c#获取带数组参数的存储过程出错

atszpp 2010-11-12 10:34:50
半夜求救了,大家帮帮忙看看咋回事
错误为“System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”

数据库定义:

create or replace package Pgl_interface is
type varchar2type is table of varchar2(255) INDEX BY BINARY_INTEGER;

procedure wx_interface (vUser in varchar2,
vOut out varchar2type,
nErr out number,
sErr out varchar2);

end pgl_interface;

create or replace package body Pgl_interface
is
procedure wx_interface (vUser in varchar2,
vOut out varchar2type,
nErr out number,
sErr out varchar2)
is
vStp_port_no varchar2(60);
begin
vStp_port_no:=vUser;
nErr:=0;
sErr:='';

for i in 1..50 loop
vOut(i):='0';
end loop;
end wx_interface ;

end Pgl_interface;


在C#代码为:

OracleConnection conn = new OracleConnection(strconn);
string[] strOut = new string[255];

conn.Open();
OracleCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Pgl_interface.wx_interface";


OracleParameter p1 = new OracleParameter("vUser", OracleDbType.Varchar2);
p1.Value = strtest;
p1.Direction = System.Data.ParameterDirection.Input;

OracleParameter p2 = new OracleParameter("vOut", OracleDbType.Varchar2);
p2.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
p2.ArrayBindSize = new int[255];
p2.Size = 255;
p2.Value = strOut;
p2.Direction = System.Data.ParameterDirection.Output;


OracleParameter p4 = new OracleParameter("nErr", OracleDbType.Int32);
p4.Value = code;
p4.Direction = ParameterDirection.Output;

OracleParameter p5 = new OracleParameter("sErr", OracleDbType.Varchar2);
p5.Value = desc;
p5.Direction = ParameterDirection.Output;

cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
cmd.Parameters.Add(p4);
cmd.Parameters.Add(p5);

cmd.ExecuteNonQuery();
...全文
134 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
atszpp 2010-11-15
  • 打赏
  • 举报
回复
上班了,有人来看看么
atszpp 2010-11-14
  • 打赏
  • 举报
回复
OracleDbType有数组类型的吗?
p2.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
不是访问数组的吗?
周公 2010-11-13
  • 打赏
  • 举报
回复
OracleDbType.Varchar2是数组类型吗?
atszpp 2010-11-12
  • 打赏
  • 举报
回复
别人提供给调用的,要是自己的早改了
rczjp 2010-11-12
  • 打赏
  • 举报
回复

你的存储过程比较特别

111,092

社区成员

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

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

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