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

问题描述 投票:0回答:1

我对此很新,我很难将下面的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

任何建议和指导将非常感谢!

sql tsql
1个回答
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"表格内容的更多细节。

© www.soinside.com 2019 - 2024. All rights reserved.