半夜求救了,大家帮帮忙看看咋回事
错误为“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();
错误为“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();
解决方案 »
- Tcp/ip协议数据包格式转换
- 还少个了什么东西,绑定不出数据来。死都想不起来了
- 求一正则表达式
- 从C++转向C#需要注意什么
- 我在datagrid里的模版列的EditItemTemplate里添加了dropdownlist,同时在datagrid的ItemDataBound方法里进行了相应的绑定,为什么按“编
- [讨论]什么时候该用存储过程,什么时候不该用?
- 可以在C#执行 DOS 命令吗?
- 请问这个SQL有什么问题
- 请问高人,如何将16进制的字符串转化为byte数组阿?
- 一条关于SQL语名怎么写的问题,大家都来参于一下,我想了好几天了。都没有结果。
- 关于删除文件的问题?
- toolStrip中的toolStripDropDownButton控件如何动态生成多层菜单
p2.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
不是访问数组的吗?