Sim*_*ons 1 t-sql sql-server variables
我正在编写一个需要动态附加数据库名称的查询。
该查询从表(在另一个数据库中)获取值,我想知道是否有更好的方法/方式。
所以我的查询如下所示:
DECLARE @TagNames AS VARCHAR(MAX) --Probably this is not a Global variable
DECLARE @QUERY AS VARCHAR(MAX)
SET @QUERY ='SELECT @TagNames = coalesce( @TagNames + '','','''') +
fldTagName FROM '+ dbo.fnGetZiConfigValue('KEYNAME')+'.dbo.tblTags Where
fldInterpolate = 1 AND fldUnitID = 13'
EXEC (@QUERY)
Run Code Online (Sandbox Code Playgroud)
当我执行这个时,我收到一个错误,
必须声明标量变量“@TagNames”。
它肯定不是全局变量。您必须在动态 SQL 内部“声明”它并在外部返回,就像使用存储过程执行此操作一样。
DECLARE @TagNames AS VARCHAR(MAX) --Probably this is not a Global variable
DECLARE @QUERY AS NVARCHAR(MAX)
SET @QUERY = N'SELECT @TagNames = coalesce( @TagNames + '','','''') +
fldTagName FROM '+ QUOTENAME(dbo.fnGetZiConfigValue('KEYNAME'))+'.dbo.tblTags Where
fldInterpolate = 1 AND fldUnitID = 13'
exec sp_executesql @QUERY, N'@TagNames VARCHAR(MAX) OUTPUT', @TagNames OUTPUT
Run Code Online (Sandbox Code Playgroud)
对于sp_executesql动态sql,它的参数声明必须是NVarchar。