如何将Netezza存储过程的返回值捕获到变量中?

时间:2014-01-31 09:52:41

标签: stored-procedures netezza

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

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

然后像(在另一个程序中)

var_name := call test();

将“成功”捕获到变量var_name

非常感谢。

2 个答案:

答案 0 :(得分:2)

我认为这里的区别在于语法中包含“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

答案 1 :(得分:0)

请在下面找到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)

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