本人菜鸟级别,做一个oracle加asp.net的程序,遇到下面问题:从vs2003里拷出来的代码,放到2005里就提示入参类型不对或大小不对。不知道各位高手怎么看这个问题,是不是2005里对package的调用方法改了?代码如下:
            OracleConnection conn = new OracleConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
            OracleCommand comd = new OracleCommand("USERINFO.LoginGLJS_ADMIN", conn);            OracleParameter p1 = new OracleParameter("UserName", OracleType.VarChar, 20);
            comd.Parameters.Add(p1);
            p1.Direction = ParameterDirection.Input;
            p1.Value = UserName;            OracleParameter p2 = new OracleParameter("UserWord", OracleType.VarChar, 50);
            comd.Parameters.Add(p2);
            p2.Direction = ParameterDirection.Input;
            p2.Value = PassWord;            OracleParameter p3 = new OracleParameter("localcur", OracleType.Cursor);
            p3.Direction = ParameterDirection.Output;
            comd.Parameters.Add(p3);            OracleParameter p4 = new OracleParameter("Reason", OracleType.VarChar, 50);
            p4.Direction = ParameterDirection.Output;
            comd.Parameters.Add(p4);            comd.CommandType = CommandType.StoredProcedure            conn.Open();
            OracleDataReader dr = comd.ExecuteReader();--到此处报错

解决方案 »

  1.   

    查看 OracleParameter p4 = new OracleParameter("Reason", OracleType.VarChar, 50);
    这一类的OracleType.VarChar的长度是否和你调用的储存过程中定义的一样;
    查看输入参数的类型和存储过程中的参数类型是否一致?另外,存储过程的输入参数好像不用定义长度吧?
      

  2.   

    Reason OUT Varchar,数据库里没定义大小,去掉大小后又提示缺少大小定义:
     OracleParameter p4 = new OracleParameter("Reason", OracleType.VarChar);
      

  3.   

       存储过程如下:
    PROCEDURE LoginGLJS_ADMIN
         ( UserName IN xtyhxx.loginid%type,
           UserWord IN xtyhxx.password%type,
           localcur OUT BASECUR,
           Reason OUT Varchar
         )
      

  4.   

    楼主可以尝试
    在comd.CommandType = CommandType.StoredProcedure
    前加入
    cmd.CommandText = "mypackage.getmsg";   
    其中mypackage.getmsg为包名
      

  5.   

    谢谢各位的帮忙,问题已解决,入参有个null值。微软给出的错误描述让我白忙活了两天。