本人菜鸟级别,做一个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();--到此处报错
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();--到此处报错
这一类的OracleType.VarChar的长度是否和你调用的储存过程中定义的一样;
查看输入参数的类型和存储过程中的参数类型是否一致?另外,存储过程的输入参数好像不用定义长度吧?
OracleParameter p4 = new OracleParameter("Reason", OracleType.VarChar);
PROCEDURE LoginGLJS_ADMIN
( UserName IN xtyhxx.loginid%type,
UserWord IN xtyhxx.password%type,
localcur OUT BASECUR,
Reason OUT Varchar
)
在comd.CommandType = CommandType.StoredProcedure
前加入
cmd.CommandText = "mypackage.getmsg";
其中mypackage.getmsg为包名