我试图在Aginity for Netezza中运行一些代码而不将其放入存储过程中,但是我无法正确使用语法。这是下面的一些示例代码。它给出错误,例如“发现“ DECLARE”(在char 1处)期望关键字。如果我将代码放在存储过程中,它将运行良好。

declare
cnt integer;
rVend record;

begin

FOR rVend in select vend_skey, vend_lvl_1_cd from dim_vend loop
    select count(*) into cnt
    from dim_vend
    where vend_lvl_1_cd = rVend.vend_lvl_1_cd and vend_skey < rVend.vend_skey;

    if cnt > 0 then
        update dim_vend
        set to_delete = 1 where vend_skey = rVend.vend_skey;
    end if;

end loop;

end;

最佳答案

问题在于Netezza不允许在存储过程之外使用变量。

如果使用Aginity Workbench查询数据库,则可以使用“参数替换”作为解决方法。这基本上是Workbench在运行SQL之前实现的查找和替换。语法为$ParamName

09-04 21:36