日期:2014-05-18  浏览次数:20481 次

一个简单的动态Sql问题
动态sql代码如下:

declare   @sel   nvarchar(1000)
declare   @count   int
declare   @kind   varchar(20)  

select   @kind= '财政性 '

set   @sel= 'select   @count=count(*)
from   table
where   kind= " '+@kind+ ' " '

EXEC   sp_executesql   @sel,N '@count   int   OUTPUT,@kind   varchar(20) ',@count   OUTPUT,@kind

运行是错误如下:
服务器:   消息   207,级别   16,状态   3,行   1
列名   '财政性 '   无效。


请问我错在哪里了?请帮我改正。

select   @sel
select   @count

------解决方案--------------------
"换成 ' '

declare @sel nvarchar(1000)
declare @count int
declare @kind varchar(20)

select @kind= '财政性 '

set @sel= 'select @count=count(*)
from table
where kind= ' ' '+@kind+ ' ' ' '

EXEC sp_executesql @sel,N '@count int OUTPUT,@kind varchar(20) ',@count OUTPUT,@kind

select @sel
select @count
------解决方案--------------------
--try

declare @sel nvarchar(1000)
declare @count int
declare @kind varchar(20)

select @kind= '财政性 '

set @sel= 'select @count=count(*)
from table
where kind= ' ' '+@kind+ ' ' ' '

EXEC sp_executesql @sel,N '@count int OUTPUT ',@count OUTPUT