如何在 Netezza 中运行代码块
Posted
技术标签:
【中文标题】如何在 Netezza 中运行代码块【英文标题】:How to run code block in Netezza 【发布时间】:2014-02-24 15:23:46 【问题描述】:我正在尝试在 Aginity for Netezza 中运行一些代码,而不将其放入存储过程中,但我无法获得正确的语法。下面是一些示例代码。它给出了诸如“发现“DECLARE”(在字符 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;
【问题讨论】:
我也面临同样的问题,能否分享一下,请更正代码。 @Niks - 你不能运行这样的代码,除非它在一个存储过程中。所以那里的代码是正确的,只需要使用 CREATE PROCEDURE 语法将其放入存储过程中,然后您就可以使用 EXEC 调用该过程。 好的...谢谢凯利 【参考方案1】:问题在于 Netezza 不允许在存储过程之外使用变量。
如果您使用 Aginity Workbench 来查询您的数据库,您可以使用“参数替换”作为解决方法。这基本上是 Workbench 在运行 SQL 之前实现的查找和替换。语法是$ParamName
。
【讨论】:
谢谢-我将停止尝试使该代码正常工作:) 参数替换不适用于此特定查询,但将来可能会有所帮助。以上是关于如何在 Netezza 中运行代码块的主要内容,如果未能解决你的问题,请参考以下文章