如何将 Netezza 存储过程的返回值捕获到变量中?
Posted
技术标签:
【中文标题】如何将 Netezza 存储过程的返回值捕获到变量中?【英文标题】:How to capture return value from Netezza stored procedure into a variable? 【发布时间】:2014-01-31 09:52:40 【问题描述】:如果有人指出将 Netezza 存储过程返回值捕获到变量中的正确方法,我将不胜感激。
create or replace procedure test() returns varchar(10) language nzplsql as
begin
return "success";
end;
然后类似(在另一个过程中)
var_name := call test();
将“成功”捕获到变量var_name
非常感谢。
【问题讨论】:
【参考方案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)
希望这会对您有所帮助。 :)
【讨论】:
以上是关于如何将 Netezza 存储过程的返回值捕获到变量中?的主要内容,如果未能解决你的问题,请参考以下文章