如何在存储过程中循环遍历数组,返回数组?

zom*_*ers 1 c# arrays oracle stored-procedures

我正在编写的存储过程的一部分(在Oracle DB上)将向ac#app返回一个整数值数组.我以前从未这样做过,我无法在线查找有关如何在存储过程中执行此操作的信息.

在C#端,我已连接到DB并创建了存储过程命令.我正在使用:

cmd.Parameters.Add("returnID", OracleDbType.Array, ParameterDirection.Output);
Run Code Online (Sandbox Code Playgroud)

抓住阵列.

在存储过程中,我有:

CREATE OR REPLACE PROCEDURE ODM(/* not relevant*/, returnIDs OUT ARRAY)
IS
BEGIN
...
END ODM;
Run Code Online (Sandbox Code Playgroud)

其中returnIDs是我想要输出的数组,其中包含整数.

我需要能够循环遍历表ORDERS,并获取两个值之间的所有整数主键,并将它们添加到returnID中.

我希望theres soemthing类似于插入数组,其中主键在最小值和最大值之间,但我不确定.

什么是能够声明这些值的语法,循环遍历表并添加到我的输出数组?

编辑:解决方案:批量收集可以为此工作,但只是将最小值和最大值返回到我的程序,然后在那里单独选​​择更容易.

Jus*_*ave 5

我不确定你是否需要循环.根据ARRAY类型的定义,您可能只是

SELECT primary_key
  BULK COLLECT INTO returnIDs
  FROM orders
 WHERE primary_key BETWEEN low_value AND high_value
Run Code Online (Sandbox Code Playgroud)