组合阵列绑定和关联数组
本文关键字:关联 数组 绑定 阵列 组合 | 更新日期: 2023-09-27 18:18:33
我想使用ODP从我的c# .net 4代码中调用oracle10g的存储过程"MyStoredProcedure"。净(4.112.2.0)。
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;
我知道如何使用数组绑定功能,这样我就可以在一个数据库往返中插入多行到一个表中。
我也知道如何调用具有关联数组作为参数的存储过程。我不知道的是如何把两者结合起来?我查看了http://docs.oracle.com/html/E10927_01/featOraCommand.htm#i1007888的示例和示例代码(但它是单独的示例)。由于
最后必须将数组转换为逗号分隔的字符串,并将其作为参数传递。在我的程序中,我将csv转换回数组
虽然转换为CSV工作,它不是很有效,你被限制在4000个字符。
要达到你想要的效果,最好使用use forall循环
。
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;
来自ODP。. NET中有两个参数,第一个是varchar,第二个是关联数组。