2015-02-09 33 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