oracle 向存储过程传入数组类型参数

来源:互联网 发布:1hhhh最新区域名 编辑:程序博客网 时间:2024/05/22 09:46

最近想试试给存储过程传数组参数,破费周折,在这里与大家分享下:


我用的plsql, 打开plsql,在type目录下面,可以创建自定义的数据类型, 于是用  create or replace type tab_str as table  of varchar2(30);  创建了一个数组类型。


接着用存储过程 procedure testfortable(pra in tab_str , pra_out out varchar2);  去调用,在C#里用

                cmd.CommandType = CommandType.StoredProcedure;                cmd.CommandText = "dlias.pra_table.testtemp";                              OracleParameter Param1 = newOracleParameter(@"pra", OracleDbType.Varchar2, 3);                             Param1.Direction = ParameterDirection.Input;                Param1.CollectionType = OracleCollectionType.PLSQLAssociativeArray;                Param1.Value = new string[3]{"1",                                             "2",                                             "3"};            
去调用存储过程,但是一直提示我 参数个数或类型错误。找了很久的错误,我在包里用  TYPE list_type IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER;  创建了一个数组类型,测试通过了,千万记得 ,不能把INDEX BY BINARY_INTEGER去掉,否则会报错,我也不知道为什么,如果有高人知道, 求指点