1

当我写这样的动态sql时?

set @dynamicSQL='select '+@logName+'= name from '+@databaseName+'.sys.sysfiles where groupid=0'

它不能工作,但是当我这样写时:

select @logName=name from sys.sysfiles where groupid=0;         

它可以正常工作,就像这样:

set @dynamicSQL='select name from '+@databaseName+'.sys.sysfiles where groupid=0'

它可以正常工作。但是为什么呢?如果有人告诉我,我会接受的。

4

1 回答 1

2

解决方案是这样的:

set @dynamicSQL=N'select @logName= name from '+@databaseName+'.sys.database_files where type_desc=''LOG'''

exec sp_executesql @dynamicSQL,N'@logName nvarchar(100) output',@logName output 

然后我们可以name从动态语句中得到。

于 2013-10-08T04:04:53.043 回答