Stored procedures 如何在过程参数中定义值数组(或列)?
我正在使用Netezza SP,遇到了一个问题 我有一个SP,定义如下:Stored procedures 如何在过程参数中定义值数组(或列)?,stored-procedures,netezza,Stored Procedures,Netezza,我正在使用Netezza SP,遇到了一个问题 我有一个SP,定义如下: CREATE OR REPLACE PROCEDURE MY_PROC(VARCHAR(ANY)) RETURNS INTEGER LANGUAGE NZPLSQL AS BEGIN_PROC DECLARE v_temp ALIAS FOR $1; /* Other decalarations */ result_ts INTEGER; BEGIN
CREATE OR REPLACE PROCEDURE MY_PROC(VARCHAR(ANY)) RETURNS INTEGER LANGUAGE NZPLSQL
AS
BEGIN_PROC
DECLARE
v_temp ALIAS FOR $1;
/* Other decalarations */
result_ts INTEGER;
BEGIN
result_ts := 0;
/* Procedure Body */
RETURN result_ts;
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'Exception Raised: %', SQLERRM;
END;
END_PROC;
如果我使用一个值运行此SP,例如:
SELECT MY_PROC('TEST_INPUT');
SELECT MY_PROC(TEST_COLUMN) FROM TEST_TABLE;
但如果我尝试使用列值运行它,例如:
SELECT MY_PROC('TEST_INPUT');
SELECT MY_PROC(TEST_COLUMN) FROM TEST_TABLE;
它给我的错误是:
错误:无法在此上下文中使用存储过程
我知道在第二个场景中,我传递了一个数组(我猜),但这不是过程所期望的
现在我正在尝试一个可以接受这些值的过程,但到目前为止还没有成功,循环和我所关心的一切,但唯一的问题是我不知道如何通过的论点
任何帮助将不胜感激,让我知道,如果我需要提供任何额外的信息在这方面
从v7.2开始,Netezza中的Asif存储过程只能通过以下方式调用,如下所示 请注意,SELECT表单不允许FROM子句 如果希望存储过程对特定表中随调用而变化的特定列执行操作,则可以将这些列的名称作为参数传递给存储过程,并在其中对整个SQL逻辑进行编码。您甚至可以将任意代码传递到存储过程中,以便在内部构建查询
您现在尝试调用它的方式更像是调用一个用户定义的函数,而这在存储过程中根本不起作用 是的。同意你的看法……)