Netezza - 如何在没有 REFTABLE 的情况下 return 来自存储过程的多个值
Netezza - How to return multiple values from a stored procedure without REFTABLE
我尝试 return 来自存储过程的一些值,而不使用 Netezza 中的 reftable。
CREATE OR REPLACE PROCEDURE TMP_GETTABLEINFO(CHAR(any), VARCHAR(any), VARCHAR(any))
returns char(1), varchar(30)
EXECUTE AS OWNER
LANGUAGE NZPLSQL
AS
begin_proc
DECLARE
a ALIAS FOR ;
b ALIAS FOR ;
BEGIN
...
RETURN a, b;
END;
可能吗?
怎么样?
我的结果是:ERROR [HY000] ERROR: Must specify LANGUAGE
我认为这是不可能的。我还没有看到多个值被 returned 的情况。
来自文档 (Netezza_stored_procedures_guide.pdf):通常,NZPLSQL 过程 return 是一个唯一的 return 值,但它也可以 return 形式的结果集指定的 table.
要创建 return 作为结果集的存储过程:
- 使用
RETURNS REFTABLE (<table-name>)
的 return 值定义存储过程,以表明它 return 是一个类似于指定 table 的结果集。
- 在程序主体内,使用变量
REFTABLENAME
来引用结果 table。
我尝试 return 来自存储过程的一些值,而不使用 Netezza 中的 reftable。
CREATE OR REPLACE PROCEDURE TMP_GETTABLEINFO(CHAR(any), VARCHAR(any), VARCHAR(any))
returns char(1), varchar(30)
EXECUTE AS OWNER
LANGUAGE NZPLSQL
AS
begin_proc
DECLARE
a ALIAS FOR ;
b ALIAS FOR ;
BEGIN
...
RETURN a, b;
END;
可能吗? 怎么样?
我的结果是:ERROR [HY000] ERROR: Must specify LANGUAGE
我认为这是不可能的。我还没有看到多个值被 returned 的情况。
来自文档 (Netezza_stored_procedures_guide.pdf):通常,NZPLSQL 过程 return 是一个唯一的 return 值,但它也可以 return 形式的结果集指定的 table.
要创建 return 作为结果集的存储过程:
- 使用
RETURNS REFTABLE (<table-name>)
的 return 值定义存储过程,以表明它 return 是一个类似于指定 table 的结果集。 - 在程序主体内,使用变量
REFTABLENAME
来引用结果 table。