Stored procedures 如何在过程参数中定义值数组(或列)?

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

我正在使用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 
        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逻辑进行编码。您甚至可以将任意代码传递到存储过程中,以便在内部构建查询


您现在尝试调用它的方式更像是调用一个用户定义的函数,而这在存储过程中根本不起作用

是的。同意你的看法……)