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

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);

【讨论】:

以上是关于使用类型在过程的输入参数中传递多值的主要内容,如果未能解决你的问题,请参考以下文章

多值模糊查询报表的制作

Mybatis多值传递的方式

在 ORACLE 中的 WHERE 中传递多值 [重复]

ORACLE中如何为存储过程传递参数?

具有多值参数的存储过程表现奇怪

将多值列表值传递给 s-s-rS 报告参数的 SSAS 报告操作