日期:2014-05-17  浏览次数:20965 次

如何向存储过程传数组?
如何向存储过程传数组?,数组在存储过程中如何使用



------解决方案--------------------
没有办法,不过有一种变通方式
把数据组织成一个字符串(可以用特殊的字符分隔),然后到存储过程里面挨个解析出来处理就好了,我一直都是这么干的
------解决方案--------------------
OracleCommand cmd = new OracleCommand( "存储过程名字 ");
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add( "pmUrl ", OracleDbType.Varchar2).Value = Url;
cmd.Parameters[ "pmUrl "].CollectionType = OracleCollectionType.PLSQLAssociativeArray;
int[] BindSize = new int[Url.Length];
for (int x = 0; x < Url.Length; x++)
BindSize[x] = Url[x].Length;

其中 Url是一个字符串类型数组, 这要求你的Oracle.DataAccess是2.0的
最好使用Oracle的那个 不要用System.Data.OracleClient.
------解决方案--------------------
这个存储过程的类型要定义一个table类型
安装oracle客户端之后 安装目录里有个example文件夹
里面的例子说的非常清楚
------解决方案--------------------
type AssocArrayVarchar2 is table of varchar2(256) index by binary_integer;
------解决方案--------------------
CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000)
我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html