2015-02-09 39 views
0

我的动态SQL查询已放置在一个表内。我想从表中读取这些数据(在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) 

回答

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 
+0

太棒了。谢谢。 – 2015-02-09 11:03:13