2017-08-17 102 views
2

我想,所以我這樣做有兩列的連接來執行查詢:如何在SQL Server中用特殊字符參數化查詢?

Select 
    Id, PtName + ' ('+Investigation+')' as PtName, Y, M, D, PtCode 
From 
    DiagMain 

但是,當我試圖參數化這個查詢,它不工作。

像這樣:

declare @Query nvarchar(MAX) 

set @Query = 'Select Id, PtName + ''(+''Investigation''+)'' as PtName, Y, M, D, Sex, PtCode FROM DiagMain' 
Exec(@Query) 

我在做什麼錯在這裏?

+0

我不明白你想要什麼參數這裏的動態查詢工作作爲您的正常Query.no參數是分配在這裏。 –

回答

4

你的單引號是多餘的,他們應該圍繞支架( & )

set @Query = 'Select Id, PtName + ''('' +Investigation+ '')'' as PtName, Y, M, D, Sex, PtCode FROM DiagMain' 

你可以通過使用打印命令調試此:

print @Query 
1
DECLARE @Query NVARCHAR(MAX) 
SET @Query ='Select Id, PtName + '' (''+Investigation+'')'' as PtName, Y, M, D, Sex, PtCode FROM DiagMain' 
PRINT @Query 
Exec(@Query) 
0

如果您需要執行上面的查詢,然後用exec sp_executesql @Query替換你的Exec(@Query),因爲要運行動態查詢你需要調用sql內置過程。所以,查詢您需要運行將以下

declare @Query nvarchar(MAX)  
set @Query = 'Select Id, PtName + ''(+''Investigation''+)'' as PtName, Y, M, D, Sex, PtCode FROM DiagMain' 
exec sp_executesql @Query 

編碼快樂:-)