我想将查询的输出用作动态SQL

时间:2015-02-09 10:35:52

标签: sql-server

我的动态SQL查询已放在表格中。我想从表中读取这些(在SQL服务器中),执行参数替换,然后执行动态查询。

即。列GetFieldServerSQL包含以下内容:

SELECT top 1 Tenancy.LeadName 
FROM Tenancy 
RIGHT OUTER JOIN Property ON Tenancy.KeyProperty = Property.KeyProperty 
WHERE (Tenancy.EndDate IS NULL) and Property.KeyProperty = @PropertyID

这就是我的尝试:

declare @sql nvarchar(1000)
declare @sql2 nvarchar(1000)
declare @res nvarchar(1000)
declare @result nvarchar(1000)

set @sql = 'SELECT [GetFieldServerSQL]
FROM [SVSCentral].[dbo].[SVSSurvey_ExternalField] where ID=5'

exec @res = sys.sp_executesql @sql
print @res

这会在“结果”窗口中返回我的查询,但我希望它作为变量。 @res仅包含0(表示成功)

一旦我将它作为一个变量,我想做一个替换。类似的东西:

set @sql2 = REPLACE(@result,'@propertyID','1003443')

(假设@result是存储结果的地方)

然后执行它:

exec (@sql2)

1 个答案:

答案 0 :(得分:2)

而不是这样做:

exec @res = sys.sp_executesql @sql

您需要将结果插入表中,然后从该表中选择,如下所示:

DECLARE @resTable TABLE (res nvarchar(1000))
INSERT INTO @resTable (res)
exec (@sql)

SELECT @res=res from @resTable
print @res