C# 调用oracle可变数组存储过程,参数错误
CREATE OR REPLACE TYPE TY_NO IS VARRAY(300) OF varchar2(100)
CREATE OR REPLACE Procedure SP_PDA_test(i_TEST TY_NO,
o_Flag Out Varchar2,
o_Text Out Varchar2) Is
V_NAME VARCHAR2(100);
Begin
FOR i IN 1 .. i_TEST.Count LOOP
V_NAME := i_TEST(i);
insert into t_text (text) values (V_NAME);
END LOOP;
Exception
When Others Then
Rollback;
End SP_PDA_test;
C#调用该存储过程,报参数错误,请问该如何调用啊?
public bool I_TEST(string[] strOrderId, ref string strFlag, ref string strText)
{
OracleParameter[] parameters = {
new OracleParameter("i_TEST", OracleDbType.Varchar2,100),
new OracleParameter("o_FLAG", OracleDbType.Varchar2,1),
new OracleParameter("o_TEXT", OracleDbType.Varchar2,250)};
parameters[0].CollectionType = OracleCollectionType.PLSQLAssociativeArray;
parameters[0].ArrayBindSize = new int[3]{1, 1, 1};
parameters[0].Direction = ParameterDirection.Input;
parameters[0].Value = new string[] { "a", "b", "c" };
parameters[1].Direction = ParameterDirection.Output;
parameters[2].Direction = ParameterDirection.Output;
OraDbLink.ExecuteNonQuery("SP_PDA_test", CommandType.StoredProcedure, parameters);
strFlag = parameters[1].Value.ToString();
strText = parameters[2].Value.ToString();
if (strFlag.Equals("0"))
{
return true;
}
return false;
}