C# 组合数组绑定和关联数组

C# 组合数组绑定和关联数组,c#,oracle,oracle10g,odp.net,C#,Oracle,Oracle10g,Odp.net,我想使用ODP.net(4.112.2.0)从我的c#net 4代码调用oracle10g的存储过程“MyStoredProcess” 我知道如何使用数组绑定功能,这样我就可以在一个数据库往返过程中将多行插入到一个表中。 我还知道如何调用具有关联数组作为参数的存储过程。我不知道如何将两者结合起来? 我查看了示例和示例代码(但它是单独的示例)。 谢谢我最终不得不将数组转换为逗号分隔的字符串,并将其作为参数传递。因此,在我的程序中,我将csv转换回数组。虽然转换为csv有效,但效率不高,最多只能使用

我想使用ODP.net(4.112.2.0)从我的c#net 4代码调用oracle10g的存储过程“MyStoredProcess”

我知道如何使用数组绑定功能,这样我就可以在一个数据库往返过程中将多行插入到一个表中。
我还知道如何调用具有关联数组作为参数的存储过程。我不知道如何将两者结合起来? 我查看了示例和示例代码(但它是单独的示例)。
谢谢

我最终不得不将数组转换为逗号分隔的字符串,并将其作为参数传递。因此,在我的程序中,我将csv转换回数组。

虽然转换为csv有效,但效率不高,最多只能使用4000个字符

为了实现您想要的,最好使用forall循环

e、 g

在ODP.NET中有两个参数,第一个是varchar,第二个是关联数组

PACKAGE MyPackage AS
TYPE ids_array IS TABLE OF NUMBER(8) INDEX BY BINARY_INTEGER;
PROCEDURE MyStoredProcedure
(
   param1 IN VARCHAR2(10),
   param2 IN ids_array
);

END MyPackage;
PACKAGE MyPackage AS
TYPE ids_array IS TABLE OF NUMBER(8) INDEX BY BINARY_INTEGER;
PROCEDURE MyStoredProcedure
(
   param1 IN VARCHAR2(10),
   param2 IN ids_array
);
/
PACKAGE MyPackage BODY

ENDPROCEDURE MyStoredProcedure
(
   param1 IN VARCHAR2(10),
   param2 IN ids_array
) AS
BEGIN

    forall i in param2.FIRST .. param2.LAST
        INSERT INTO TABLE(col1,col2) VALUES (param1, params2(i));

END;

END MyPackage;