C# 调用oracle可变数组存储过程,参数错误

jackbl 2015-01-12 05:41:35
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;
}
...全文
118 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
江南小鱼 2015-01-12
  • 打赏
  • 举报
回复
把你的参数在pl/sql执行这个存储过程,是否正常?

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧