最近想试试给存储过程传数组参数,破费周折,在这里与大家分享下:
我用的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 = new
OracleParameter(@"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去掉,否则会报错,我也不知道为什么,如果有高人知道, 求指点