将动态SELECT查询转换为UPDATE存储过程SQL

时间:2018-03-05 10:31:07

标签: sql tsql

我对此很陌生,我很难将下面的SQL查询转换为存储过程的UPDATE语句。

SELECT 'select'+
stuff((
SELECT ',' + 'dbo.' + Function_Name + '(' + Parameters_List + ')'  FROM 
[SPECIFIC_DATABASE]..Specific_table c WHERE c.Table_Name = t.Table_Name FOR 
XML PATH('')),1,1,'') 
+' from [' + Database_Name +'].[dbo].['+Table_Name+'] '
+ 'Where Audit_ID>' + CAST(@Audit_ID as nvarchar(100))
As 'Specific Queries' 
FROM (SELECT Distinct Database_Name, Table_Name FROM [SPECIFIC_DATABASE]..Specific_table) t

UPDATE查询应该类似于

UPDATE Table_name
SET Column_name = Function_Name(Parameters_List)
WHERE Audit_id >= @Audit_ID
FROM [SPECIFIC_DATABASE]..Specific_table

对此的任何建议和指导都将非常感谢!

1 个答案:

答案 0 :(得分:1)

我认为这应该会给你你想要的东西,但是我没有看到任何对Column_Name的引用,所以我假设你会硬编码。

select 'UPDATE tbl' + stuff((
            select ' set Column_Name = ' + 'dbo.' + Function_Name + '(' + Parameters_List + ')'
            from [SPECIFIC_DATABASE]..Specific_table c
            where c.Table_Name = t.Table_Name
            for xml PATH('')
            ), 1, 1, '') 
       + ' from [' + Database_Name + '].[dbo].[' + Table_Name + '] tbl' 
       + 'Where Audit_ID>' 
       + CAST(@Audit_ID as nvarchar(100)) as 'Specific Queries'
from (
    select distinct Database_Name, Table_Name
    from [SPECIFIC_DATABASE]..Specific_table
    ) t

如果答案不对,那么如果您发布第一个查询的当前输出可能会有所帮助,也可能会更新一些关于名为"Specific_table"的表格内容的详细信息。