使用Type在过程的输入参数中传递多值

时间:2015-06-16 19:37:17

标签: sql oracle plsql

如何在程序参数中传递Multi值,使用类型?

我希望我的输入参数的过程采用多值,' 1,2,3,4,5...' 并将其转换为一个表,其中包含输入值的列和行号的列!使用类型或函数。

首先我创建了包含两个属性(值,行号)的对象类型,然后我创建了该类型对象的表。 我想要分割功能,但使用类型,我尝试了很多东西,但我至少需要步骤。

2 个答案:

答案 0 :(得分:0)

创建一个简单的表格......

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;

答案 1 :(得分:0)

hi如果输入参数中只有整数值,则可以使用xmltable。 v_list是行中的输入值;它会将行转换为列(元素集合)并将my_list收集到集合变量中。

select to_number(column_value)
  bulk collect into my_list
  from xmltable(vList);