Netezza SQL 脚本格式

Posted

技术标签:

【中文标题】Netezza SQL 脚本格式【英文标题】:Netezza SQL script format 【发布时间】:2015-05-20 17:24:01 【问题描述】:

我想用 DECLARE/BEGIN/END 编写一个 SQL 脚本(代码块)然后执行它,但我不希望它是一个存储过程。在 oracle 或 SQL Server 中,我可以将文件保存为 .sql 文件,然后执行它。在 Netezza 中,这不起作用。任何显示如何运行 SQL 代码的普通 DECLARE/BEGIN/END 块的指针都会有所帮助。

例如,我将如何在 Netezza 中执行这段代码而不创建存储过程。我想将文件保存在我的电脑上,并在需要时执行。

declare
   cursor c1 is SELECT DISTICT sdogid from POLYGON_SDOGEOM;
   gid number;
   i number; 
begin
     i := 0;
     for r in c1 loop
       begin
        gid:= r.sdo_gid;
        sdo_admin.update_index_fixed('POLYGON', gid, 15, FALSE, FALSE, FALSE);
        exeption when others then
          dbms_output.put_line('error for gid'||to_char(gid)||':  '||SQLERRM );
       end;
       i:=  i + 1;
       if i = 50 then
          commit;
          i:= 0;
       end if;
     endloop;
commit;
end;
/

【问题讨论】:

你考虑过在 Powershell 中使用 SQLCMD 吗? Powershell 在您的环境中可用吗? 【参考方案1】:

简短的回答是你不能这样做。您在这里想要做的是在存储过程之外运行 SQL 的过程变体,这不是 Netezza(及其祖先 PostgreSQL)努力遵守的 ANSI 标准的一部分。

这种过程逻辑必须在存储过程中实现。

【讨论】:

以上是关于Netezza SQL 脚本格式的主要内容,如果未能解决你的问题,请参考以下文章

如何安排 sql 脚本并将数据导出到 IBM Netezza 中的特定位置

由于日期格式,将数据从 txt 文件导入 IBM netezza SQL 数据库时出错

Netezza - 从 SQL 语句中获取已删除记录的计数

我可以从 Netezza 导出 SQL 查询结果吗?

如何在 Netezza SQL 中用前导零填充整数

我们可以在 Netezza sql 中使用 switch case 吗?