[英]Converting a Static SQL Query into Dynamic SQL on a Stored Procedure
我写了一个这样的存储过程,
Alter PROCEDURE sp_bestReviewer_report
(
@StartingLetter AS VARCHAR(1),
@CountsReq AS DECIMAL(3),
@ReqRev AS INT
@RequiredColumn AS SYSNAME
)
AS
BEGIN
SELECT TOP(@ReqRev) @RequiredColumn, Count(Reviewer) AS Total FROM [reviews_not_sent] WHERE LEFT(Reviewer,1) = @StartingLetter
GROUP BY (Reviewer)
HAVING (Count(Reviewer) > @CountsReq OR Count(Reviewer) < @CountsReq)
ORDER BY
Total DESC;
END;
我正在尝试将@RequiredColumn(必需的列)作为参数动态传递给存储过程。
我怎样才能做到这一点。
您需要动态 SQL 传入列名:
BEGIN
DECLARE @sql NVARCHAR(MAX);
SET @sql = '
SELECT TOP (@ReqRev) [RequiredColumn], Count(Reviewer) AS Total
FROM [reviews_not_sent]
WHERE LEFT(Reviewer, 1) = @StartingLetter
GROUP BY Reviewer
HAVING Count(Reviewer) <> @CountsReq
ORDER BY Total DESC
';
SET @sql = REPLACE(@sql, '[RequiredColumn]', QUOTENAME(@RequiredColumn));
EXEC sp_executesql @sql,
N'@ReqRev int, @StartingLetter VARCHAR(1), @CountsReq DECIMAL(3)',
@ReqRev=@ReqRev, @StartingLetter=@StartingLetter, @CountsReq=@CountsReq;
END;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.