我试图在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
。