半夜求救了,大家帮帮忙看看咋回事
错误为“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();