【问题标题】:NZSQL/CODE - How to use PRINT in NetezzaNZSQL/CODE - 如何在 Netezza 中使用 PRINT
【发布时间】:2015-02-12 21:16:55
【问题描述】:

我们正在为 Netezza SQL 使用 Aginity Workbench,我想知道是否有人知道 NZSQL 中用于 TSQL“PRINT”功能的等价物?

当有人尝试执行不应该重写数据的查询时,我们使用它来打印错误,而我发现的唯一解决方案是使用 netezza 命令行“-t”。

提前致谢!

【问题讨论】:

    标签: sql netezza


    【解决方案1】:

    您可以使用 RAISE 来执行此操作,如 here 所述。

    这是一个例子:

    CREATE OR REPLACE PROCEDURE RAISE_DEMO()
    RETURNS VARCHAR(ANY)
    EXECUTE AS OWNER
    LANGUAGE NZPLSQL AS
    BEGIN_PROC
    DECLARE
    MYNAME varchar;
    BEGIN
    MYNAME := 'SCOTT';
    
    RAISE NOTICE 'Hello, %', MYNAME;
    
    END;
    END_PROC;
    

    TESTDB.ADMIN(ADMIN)=> call raise_demo();
    NOTICE:  Hello, SCOTT
     RAISE_DEMO
    ------------
    
    (1 row)
    

    如果将 NOTICE 更改为 EXCEPTION,则执行将停止。

    CREATE OR REPLACE PROCEDURE RAISE_DEMO()
    RETURNS VARCHAR(ANY)
    EXECUTE AS OWNER
    LANGUAGE NZPLSQL AS
    BEGIN_PROC
    DECLARE
    MYNAME varchar;
    BEGIN
    MYNAME := 'SCOTT';
    
    RAISE EXCEPTION 'Hello, %, this is an exception', MYNAME;
    
    RAISE NOTICE 'You should not see this message';
    
    END;
    END_PROC;
    

    TESTDB.ADMIN(ADMIN)=>  call raise_demo();
    ERROR:  Hello, SCOTT, this is an exception
    TESTDB.ADMIN(ADMIN)=>
    

    此行为记录在我在顶部提供的链接中。

    【讨论】:

    • 感谢您的回复,斯科特。有没有办法让加薪通知根据逻辑停止查询?我们在 TSQL 中使用的是: IF Col1=Col2 BEGIN PRINT N' My Custom Comment Here' RETURN END ELSE
    • 编辑了答案以涵盖该问题。
    • 再次感谢您的帮助,斯科特。非常感激。打算搞砸这个,我认为这对我们有用!
    猜你喜欢
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    相关资源
    最近更新 更多