Teradata Macro中的动态“SELECT TOP:参数”

时间:2010-10-26 12:54:28

标签: sql teradata

我需要更改一个宏,以便可以传递参数来控制结果集的最大大小。

我的想法是这个SQL:

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

但我得到的只是信息:

  

[SQLState 42000]语法错误,预期“top”和“:”之间的整数或十进制数字。

除了宏之外,我不可能以任何其他方式执行此操作。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

我找到了一种方法:

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