【问题标题】:How to run code block in Netezza如何在 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 调用该过程。
  • 好的...谢谢凯利

标签: sql netezza


【解决方案1】:

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

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

【讨论】:

  • 谢谢-我将停止尝试使该代码正常工作:) 参数替换不适用于此特定查询,但将来可能会有所帮助。
猜你喜欢
  • 2014-02-14
  • 1970-01-01
  • 2022-09-23
  • 2014-09-16
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
相关资源
最近更新 更多