当我在.net mvc项目中使用旧的Oracle Dll时,它可以工作:
cmd.CommandText = "dba.user_login";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("KUL", OracleType.VarChar).Value = userName;
cmd.Parameters.Add("SIFRE", OracleType.VarChar).Value = pass;
cmd.Parameters.Add("FLAG", OracleType.Float).Value = 1;
cmd.Parameters.Add("HATA", OracleType.VarChar).Value = "error";
cmd.Parameters.Add("result", OracleType.Float).Direction = ParameterDirection.ReturnValue;
但我想使用新的oracle .net提供程序,因为旧的oracle dll已弃用。我试过这个:
cmd.CommandText = "dba.user_login";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("KUL", OracleDbType.Varchar2).Value = userName;
cmd.Parameters.Add("SIFRE", OracleDbType.Varchar2).Value = pass;
cmd.Parameters.Add("FLAG", OracleDbType.Single).Value = 1;
cmd.Parameters.Add("HATA", OracleDbType.Varchar2).Value = "error";
cmd.Parameters.Add("result", OracleDbType.Single).Direction = ParameterDirection.ReturnValue;
但它不起作用。例外:ORA-06502:PL / SQL:数字或值错误:字符到数字转换错误\ nORA-06512:第1行 任何人都可以帮我解决这个问题。谢谢。
答案 0 :(得分:2)
太棒了,一个设计决定总是会在使用它时开始出现问题(偶尔会出现在路上!)
由于这回答了你的问题,我会'推广'我对答案的评论(如果这不合适,请告诉我,我会删除这个答案)
请记住,默认情况下ODP.net按位置绑定(默认System.Data.Ora中断) - 您可以使用
BindByName = true
强制命令对象表现相同的