最近需要维护一个老项目,用的 Microsoft.Practices.EnterpriseLibrary
但是,调用存储过程时,一直报错:
The number of parameters does not match number of values for stored procedure
存储过程参数如下:
procedure Login
(
p_account varchar2,
p_pwd varchar2,
p_out out p_cursor
) is
。。。。。。
用某度搜索到一个同样的问题,但是没能解决。
希望大佬能帮帮小弟
declare ret_cursor p_cursor
EXECUTE Login('账号','密码',ret_cursor)
使用应该就是这么使用,看提示应该是少了参数
根据您提供的存储过程参数定义,我注意到您的存储过程有3个参数:p_account、p_pwd和p_out。为了调用这个存储过程,您需要确保在代码中传递了相应的值,并且传递的参数数量与存储过程定义的参数数量相匹配。
以下是一些可能帮助您解决此问题的步骤:
// 创建参数对象
var accountParam = new SqlParameter("@p_account", SqlDbType.VarChar) { Value = "your_account_value" };
var pwdParam = new SqlParameter("@p_pwd", SqlDbType.VarChar) { Value = "your_password_value" };
var outParam = new SqlParameter("@p_out", SqlDbType.Cursor) { Direction = ParameterDirection.Output };
// 执行存储过程
var command = new SqlCommand("Login", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(accountParam);
command.Parameters.Add(pwdParam);
command.Parameters.Add(outParam);
// 执行命令并获取结果
command.ExecuteNonQuery();
// 获取输出参数的值
var result = outParam.Value;
请注意,上述示例是基于使用Microsoft.Data.SqlClient的ADO.NET的常见用法,您可能需要根据自己项目和框架进行调整。
如果问题仍然存在,我建议您查看更多关于Microsoft.Practices.EnterpriseLibrary的文档、示例代码或向社区寻求帮助,以获取针对该库的更具体支持和解决方案。