我的动态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)
答案 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