代码之家  ›  专栏  ›  技术社区  ›  Lars

Teradata宏中的动态“选择顶部:参数”

  •  1
  • Lars  · 技术社区  · 14 年前

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

    我的想法是这个SQL:

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

    但我得到的信息是:

    [sqlstate 42000]语法错误,应为“top”和“:”之间的整数或十进制数。

    我不可能用宏以外的任何其他方式来执行此操作。

    我该怎么做?

    1 回复  |  直到 12 年前
        1
  •  3
  •   Lars    14 年前

    我找到了一种方法:

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