Dynamique « SELECT TOP: paramètre » dans Teradata Macro
Question
Je dois modifier une macro de la manière qu'un paramètre peut être passé pour contrôler la taille maximale du jeu de résultats.
Mon idée était ce SQL:
REPLACE MACRO myMacro
( maxRows INTEGER DEFAULT 100 )
AS
(
SELECT TOP :maxRows
FROM myTable;
);
Mais tout ce que je get est le message:
[SQLState 42000] Erreur de syntaxe, quelque chose comme prévu un nombre entier ou décimal compris entre 'top' et ':'.
Il est impossible pour moi de faire cela d'une autre manière qu'une macro.
Comment puis-je faire?
La solution
J'ai trouvé une façon de le faire:
REPLACE MACRO myMacro
( maxRows INTEGER DEFAULT 100 )
AS
(
SELECT
ROW_NUMBER() OVER (ORDER BY myColumn) AS RowNo,
myColumn
FROM myTable
WHERE RowNo <= :maxRows;
);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow