使用类型在过程的输入参数中传递多值
Posted
技术标签:
【中文标题】使用类型在过程的输入参数中传递多值【英文标题】:Passing Multi-value in the input Parameter of the Procedure using Type 【发布时间】:2015-06-16 19:37:17 【问题描述】:如何使用类型在过程参数中传递多值?
我希望我的过程输入参数采用多值,' 1,2,3,4,5...'
并将其转换为包含输入值列和行号列的表!使用类型或函数。
首先我创建了包含两个属性(值,行号)的对象类型,然后我创建了对象类型的表。 我想要拆分功能,但使用类型,我尝试了很多东西,但我至少想要步骤。
【问题讨论】:
你试过什么?你知道收藏和记录吗? docs.oracle.com/cd/B10501_01/appdev.920/a96624/05_colls.htm 如果从其他表中获取多个值,则使用cursor
或使用for loop
。首先放一些你尝试过的语句或程序。
不,我在程序中输入值
如果您已经在程序中分配了值,最好使用for loop
。
我想把它转换成表格,这样我就可以和其他表格一起加入了
【参考方案1】:
创建一个简单的表...
create table table1 (column1 number);
创建一个过程...
create or replace procedure proc_one
(v_input IN table1.column1%type)
IS
v_local number;
begin
insert into table1 values (v_input);
end;
并使用循环运行一个匿名块并每次执行过程,直到列中的所有行都循环通过。
declare
var_local number;
begin
--select count(column1) into v_local from table1;
--or
--var_local := 1;
--or
for i in (select column1 from table) loop
proc_one(i.column1);
end loop;
exception
when others then
dbms_output.put_line('Calling procedure has been failed.');
end;
【讨论】:
【参考方案2】:hi 如果您在输入参数中只有整数值,那么您可以使用 xmltable。 v_list 是您在行中的输入值;它将行转换为列(元素的集合)并将集合变量收集到 my_list 中。
select to_number(column_value)
bulk collect into my_list
from xmltable(vList);
【讨论】:
以上是关于使用类型在过程的输入参数中传递多值的主要内容,如果未能解决你的问题,请参考以下文章