【发布时间】:2014-02-21 21:11:09
【问题描述】:
错误:
过程或函数“”需要未提供的参数“@Param1”。
存储过程的摘录:
我在 SQL Server 2012 上有一个存储过程。该过程看起来像这样...
SELECT *
FROM Orders
WHERE Orders.CustomerID = @param1 AND
Orders.CustomerJoinDate = @param2
我从我的代码 {Using Visual Studio 2008} 中这样调用它...
Visual Studios 中的调用方法:
首先我创建一个要传递的参数数组...
Dim Param() As SqlClient.SqlParameter =
New SqlClient.SqlParameter()
{
New SqlClient.SqlParameter("@Param1", Me.cmbFilter1.Text),
New SqlClient.SqlParameter("@Param2", Me.cmbFilter2.Text)
}
然后我遍历参数并将它们添加到要由数据读取器执行的命令中。
mSQLCmd 设置为调用上述存储过程...
mSQLCmd.Parameters.Clear()
mSQLCmd.CommandText = SQLCmd
For Each sParam As SqlClient.SqlParameter In Param
mSQLCmd.Parameters.AddWithValue(sParam.ParameterName, sParam.Value)
Next
在以下情况下发生错误:
我尝试运行mSQL.ExecuteReader() 有人能指出我正确的方向吗?我已经验证了 Param() 中包含的每个参数的值都正确。
我还在 SQL Server 上测试了存储过程,并在提供两个必要参数时验证了它是否可以正常工作。 vb 方面出了点问题。
【问题讨论】:
-
可能区分大小写....
-
你能验证SQL客户端正在执行的命令吗?听起来好像执行sp时没有包含参数。
-
你也可以不用@....我记得类似的事情
New SqlClient.SqlParameter("param1", Me.cmbFilter1.Text) -
你能包括你的程序的完整定义,而不仅仅是身体吗?
-
这只是一个错字? foreach 使用 Param 而不是 Params
标签: sql sql-server vb.net stored-procedures sql-server-2012