【问题标题】:How to capture return value from Netezza stored procedure into a variable?如何将 Netezza 存储过程的返回值捕获到变量中?
【发布时间】:2023-04-04 05:12:01
【问题描述】:

如果有人指出将 Netezza 存储过程返回值捕获到变量中的正确方法,我将不胜感激。

create or replace procedure test() returns varchar(10) language nzplsql as
begin
 return "success";
end;

然后类似(在另一个过程中)

var_name := call test();

将“成功”捕获到变量var_name

非常感谢。

【问题讨论】:

    标签: stored-procedures netezza


    【解决方案1】:

    我相信这里的区别是在语法中包含单词“Call”会导致 NZPLSQL 丢弃 Proc Call 的结果。 (ref)

    所以而不是

    var_name := call test();
    

    你只是想要

    var_name := test();
    

    注意:如果您想要返回多个值,您应该查看以下描述使用 reftable 的文档。

    http://pic.dhe.ibm.com/infocenter/ntz/v7r0m3/index.jsp?topic=%2Fcom.ibm.nz.sproc.doc%2Fc_sproc_returning_a_result_set.html

    【讨论】:

      【解决方案2】:

      请在下面找到 2 个程序,其中第一个程序的返回值被第二个程序捕获 -

      程序 VarunTest -

      CREATE OR REPLACE PROCEDURE varunTest()
      LANGUAGE NZPLSQL RETURNS varchar(255) AS
      
      BEGIN_PROC
      
      DECLARE
      
      BEGIN
              return 'varunTest';
      
      END;
      
      
      END_PROC;
      

      创建过程

      \i varunTest.sql
      

      程序 BajajTest

      CREATE OR REPLACE PROCEDURE bajajTest()
      LANGUAGE NZPLSQL RETURNS varchar(255) AS
      
      BEGIN_PROC
      
      DECLARE
       v_test varchar;
      
      BEGIN
       v_test := varuntest();
      
       raise notice 'result => %', v_test;
      
      END;
      
      
      END_PROC;
      

      创建过程

      \i bajajTest.sql
      

      调用过程

      call bajajTest();
      

      程序结果 -

      NOTICE:  result => varunTest
      BAJAJTEST
      -----------
      
      (1 row)
      

      希望这会对您有所帮助。 :)

      【讨论】:

        猜你喜欢
        • 2017-05-02
        • 1970-01-01
        • 1970-01-01
        • 2017-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-25
        相关资源
        最近更新 更多