我试图将(varchar
)数据数组传递到Oracle过程。 Oracle过程会从SQL * Plus或从另一个PL/SQL程序,像这样既可以称为:将一组数据作为输入参数传递给Oracle过程
BEGIN
pr_perform_task('1','2','3','4');
END;
pr_perform_task
将读取每个输入参数和执行的任务。
我不确定我是如何实现这一目标的。我首先想到的是使用varray
类型的输入参数,但我得到Error: PLS-00201: identifier 'VARRAY' must be declared
错误,当程序definiton看起来是这样的:
CREATE OR REPLACE PROCEDURE PR_DELETE_RECORD_VARRAY(P_ID VARRAY) IS
总之,我怎么能传递数据作为一个数组,让SP循环遍历每个参数并执行任务?
我使用Oracle 10gR2作为我的数据库。
不错回答。我想知道是否可以做你的第一个方法,但是对于't_in'中的元素数量是动态的(也就是说,每次调用'testing'都不同)?似乎需要至少硬编码“MyType”的上限?不知何故可以解除这个限制吗? – ggkmath 2012-08-26 01:02:49
@ggkmath,数组的大小并不重要,但是当您创建或更改TYPE时,您必须声明VARRAY上限。 – DCookie 2012-08-26 01:23:04
是否有替代解决方案可以适应这种动态大小,也许没有VARRAY?如果脱离主题,我可以开始一个新的线程。 – ggkmath 2012-08-26 03:34:33