如果有人指出我将Netezza存储过程返回值捕获到变量中的正确方法,我将不胜感激。
create or replace procedure test() returns varchar(10) language nzplsql as
begin
return "success";
end;
然后像(在另一个程序中)
var_name := call test();
将“成功”捕获到变量var_name
非常感谢。
答案 0 :(得分:2)
我认为这里的区别在于语法中包含“Call”一词会导致NZPLSQL丢弃Proc Call的结果。 (ref)
所以而不是
var_name := call test();
你只想要
var_name := test();
注意:如果您想要返回多个值,则应查看以下描述使用reftable的文档。
答案 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)
希望这会对你有所帮助。 :)