2017-08-17 100 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 

编码快乐:-)