Динамический «SELECT TOP: параметр» в макросе Teradata - PullRequest
1 голос
/ 26 октября 2010

Мне нужно изменить макрос так, чтобы можно было передать параметр для управления максимальным размером набора результатов.

Моя идея заключалась в следующем SQL:

REPLACE MACRO myMacro
( maxRows INTEGER DEFAULT 100 )
AS
(
    SELECT TOP :maxRows
    FROM myTable;
);

Но всеЯ получаю это сообщение:

[SQLState 42000] Синтаксическая ошибка, Ожидается что-то вроде целого числа или десятичного числа между «top» и «:».* Я не могу сделать это иначе, чем макрос.

Как я могу это сделать?

1 Ответ

3 голосов
/ 26 октября 2010

Я нашел способ сделать это:

REPLACE MACRO myMacro
( maxRows INTEGER DEFAULT 100 )
AS
(
    SELECT 
        ROW_NUMBER() OVER (ORDER BY myColumn) AS RowNo, 
        myColumn
    FROM myTable
    WHERE RowNo <= :maxRows;
);
...