我正在尝试编写一个运行单个任意过程的sql * plus脚本。棘手的部分是我希望能够运行该过程,而不管该过程需要多少个参数。是否可以通过编程在Oracle SQL * plus脚本中构造替换变量的名称?
为了找出正确的参数号的程序,我做了以下内容:
SELECT COUNT(*) INTO v_in
FROM all_arguments
WHERE LOWER(owner) = LOWER(v_schema)
AND LOWER(package_name) = LOWER(v_package)
AND LOWER(object_name) = LOWER(v_proc)
AND in_out = 'IN';
当谈到时间来建立执行,立即串,我想用一些循环要做到这一点。参数全部正在通过编号,& 1到& n。
FOR i IN 1..v_in
LOOP
v_block := v_block || '''' || &i || '''';
IF i != v_in THEN
v_block := v_block || ',';
END IF;
END LOOP;
但这不起作用。它看到&我当然认为它是一个名为i的参数,并且由于调度应用程序(Appworx ...呃)没有运行定义i =某事,所以这个失败惨不忍睹。
有没有什么办法可以做到这一点间接,这样我可以迭代通过,但是很多对于给定的过程恰好是正确的?
下降的*&*从*我*?这只是一个变量,对吧? – 2012-07-18 20:23:52
是的,但我需要(在循环中)添加第四个参数,然后是第五个参数,然后是第六个参数,依此类推,直到我已经抓取了此脚本文件的所有参数。我需要一些扩展到&4,然后到&5等的东西。 – 2012-07-18 20:30:57