我有以下動態查詢工作正常,沒有WHERE
子句,這是期待UNIQUEIDENTIFIER
。T-SQL:如何在動態SQL中使用參數?
當我通過它時,我沒有得到結果。我試過CAST
和CONVERT
,但沒有結果。我可能做錯了,任何人都可以幫忙嗎?
CREATE PROCEDURE [dbo].[sp_Test1] /* 'b0da56dc-fc73-4c0e-85f7-541e3e8f249d' */
(
@p_CreatedBy UNIQUEIDENTIFIER
)
AS
DECLARE @sql NVARCHAR(4000)
SET @sql ='
DECLARE @p_CreatedBY UNIQUEIDENTIFIER
SELECT
DateTime,
Subject,
CreatedBy
FROM
(
SELECT
DateTime, Subject, CreatedBy,
ROW_NUMBER() OVER(ORDER BY DateTime) AS Indexing
FROM
ComposeMail
WHERE
CreatedBy = @p_CreatedBy /* <--- the problem is in this condition */
) AS NewDataTable
'
EXEC sp_executesql @sql
我甚至試過用引號傳遞確切的uniqueidentifier,但是當我這樣做的時候它給出了不正確的語法。任何示例如何做到這一點。 – 2009-06-24 07:07:46
等一下......你不需要把var的名字放在引號之外嗎?所以沿着WHERE CreatedBy ='+ @p_CreatedBy +'的行) 我認爲這種方式實際上把文字字符串放入sql中。 – 2009-06-24 07:15:24