我得到的錯誤「指定的參數太多」,但無法找到問題sp_sqlexec - 對很多參數指定
任何幫助,將不勝感激
3個參數在開始的程序
的規定DECLARE
@WhereStatment nvarchar(500),
@ParamList nvarchar(500) = N'@p1 int, @p2 varchar(256), @p3 int'
SET @WhereStatment = ''
-- Check for Status Filter
IF @StatusFilter <> 'All'
SET @WhereStatment = @WhereStatment + ' EntryStatus = @StatusFilter'
ELSE
BEGIN
SET @StatusFilter = 'Invoiced (Complete)'
SET @WhereStatment = @WhereStatment + ' EntryStatus <> @StatusFilter'
END
-- Check for User Filter
IF @UserFilter > 0
SET @WhereStatment = @WhereStatment + ' AND EobID = @UserFilter'
-- Check for Warehouse Filter
IF @WarehouseFilter > 0
SET @WhereStatment = @WhereStatment + ' AND WarehouseNumber = @WarehouseFilter'
-- Add WhereStatement
Set @WhereStatment = '
SELECT
tblWCS_SQE_Entries.RowID, SaleNum, tblWCS_Company_UserAccounts.Fullname, Ets
FROM tblWCS_SQE_Entries
INNER JOIN tblWCS_Company_UserAccounts
ON tblWCS_SQE_Entries.EobID = tblWCS_Company_UserAccounts.RowID
WHERE
'
+ @WhereStatment;
EXEC sp_sqlexec @WhereStatment, @ParamList,
@p1 = @UserFilter,
@p2 = @StatusFilter,
@p3 = @WarehouseFilter
sp_sqlexec已不再使用https://social.msdn.microsoft.com/Forums/sqlserver/en-US/554d6373-8a22-4b10-8744-df13e5415f84/spexecutesql-vs-spsqlexec?forum=sqlgetstarted使用sp_executesql。這裏有一個關於如何使用它的例子https://msdn.microsoft.com/en-us/library/ms188001.aspx – CiucaS
'sp_sqlexec'已被棄用,應該使用'sp_executesql'。您的參數列表提供'@ p1,@ p2,@ p3',但查詢引用'@StatusFilter,@UserFilter,@ WarehouseFilter' – MatBailie