首页 新闻 会员 周边 捐助

Microsoft.Practices.EnterpriseLibrary 调用存储过程参数数量不对问题

0
悬赏园豆:20 [待解决问题]

最近需要维护一个老项目,用的 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
。。。。。。

用某度搜索到一个同样的问题,但是没能解决。
希望大佬能帮帮小弟

热敷哥的主页 热敷哥 | 初学一级 | 园豆:160
提问于:2024-08-12 14:22
< >
分享
所有回答(2)
0

declare ret_cursor p_cursor
EXECUTE Login('账号','密码',ret_cursor)

使用应该就是这么使用,看提示应该是少了参数

慢爬的小蜗牛 | 园豆:214 (菜鸟二级) | 2024-08-12 16:17
0

根据您提供的存储过程参数定义,我注意到您的存储过程有3个参数:p_account、p_pwd和p_out。为了调用这个存储过程,您需要确保在代码中传递了相应的值,并且传递的参数数量与存储过程定义的参数数量相匹配。
以下是一些可能帮助您解决此问题的步骤:

  1. 确认您在调用存储过程时是否为所需的3个参数都传递了值,即p_account和p_pwd。
  2. 确保按照正确的顺序和类型传递了这些参数。
  3. 针对存储过程的输出参数p_out,请确保已正确声明并为其分配了适当的变量来接收输出结果。
    示例代码片段(C#):
    csharp

// 创建参数对象
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的文档、示例代码或向社区寻求帮助,以获取针对该库的更具体支持和解决方案。

Technologyforgood | 园豆:7231 (大侠五级) | 2024-08-13 08:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册