我正在尝试将一组( varchar
)数据传递给Oracle过程 . Oracle过程可以从SQL * Plus调用,也可以从另一个PL / SQL过程调用,如下所示:
BEGIN
pr_perform_task('1','2','3','4');
END;
pr_perform_task
将读取每个输入参数并执行任务 .
我不确定如何实现这一目标 . 我的第一个想法是使用 varray
类型的输入参数,但我得到 Error: PLS-00201: identifier 'VARRAY' must be declared
错误,当程序定义如下所示:
CREATE OR REPLACE PROCEDURE PR_DELETE_RECORD_VARRAY(P_ID VARRAY) IS
总而言之,如何将数据作为数组传递,让SP循环遍历每个参数并执行任务?
我使用Oracle 10gR2作为我的数据库 .
2 回答
这是一种方法:
为了扩展我对@ dcp的答案的评论,如果你想使用一个关联数组,这里是你如何实现那里提出的解决方案:
这交易创建了一个独立的Oracle TYPE(不能是一个关联数组),需要定义一个所有人都可以看到的包,以便所有人都可以使用它所定义的TYPE .
如果参数的类型都相同(例如
varchar2
),您可以使用这样的包来执行以下操作:然后,要调用它,您需要设置数组并传递它: