我试图在Aginity中为Netezza运行一些代码而不将其放在存储过程中,但我无法正确使用语法。以下是一些示例代码。它给出了“Found”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;
答案 0 :(得分:2)
问题在于Netezza不允许在存储过程之外使用变量。
如果使用Aginity Workbench查询数据库,则可以使用“参数替换”作为解决方法。这基本上是Workbench在运行SQL之前实现的查找和替换。语法为$ParamName
。