gpt4 book ai didi

sql - 表的每一行都有sql语句。我如何按顺序运行每个?

转载 作者:行者123 更新时间:2023-12-02 11:10:58 26 4
gpt4 key购买 nike

我正在使用Microsoft SQL Server。我的数据库中有一个表。第一行是按数字顺序排列的 Item #,第二列是我需要运行的 T-SQL 的确切行。

如何编写调用每行以按项目编号的顺序运行的内容?

 Item #       Code ------       ----   1          UPDATE GOC_AU_INTERSECTION SET GOC_AU_INTERSECTION.DSMT_BUSINESS = 'BUSA',              GOC_AU_INTERSECTION.RULE_CODE = '101'  FROM DSMT_GOC_FLAT, GOC_AU_INTERSECTION                                   WHERE GOC_AU_INTERSECTION.RULE_CODE Is Null AND DSMT_GOC_FLAT.MS_Level_10='14197'                         AND DSMT_GOC_FLAT.GOC = GOC_AU_INTERSECTION.GOC;     2          UPDATE GOC_AU_INTERSECTION SET GOC_AU_INTERSECTION.DSMT_BUSINESS = 'BUSA',                         GOC_AU_INTERSECTION.RULE_CODE = '102' FROM DSMT_GOC_FLAT, GOC_AU_INTERSECTION                          WHERE GOC_AU_INTERSECTION.RULE_CODE Is Null AND DSMT_GOC_FLAT.MS_Level_10='14198'                           AND DSMT_GOC_FLAT.GOC = GOC_AU_INTERSECTION.GOC;        3          UPDATE GOC_AU_INTERSECTION SET GOC_AU_INTERSECTION.DSMT_BUSINESS = 'BUSA',               GOC_AU_INTERSECTION.RULE_CODE = '103' FROM DSMT_GOC_FLAT, GOC_AU_INTERSECTION               WHERE GOC_AU_INTERSECTION.RULE_CODE Is Null AND DSMT_GOC_FLAT.MS_Level_10='14202'               AND DSMT_GOC_FLAT.GOC = GOC_AU_INTERSECTION.GOC ;

最佳答案

您可以使用光标和 sp_executesql

来完成此操作
DECLARE @sqlStmt VARCHAR(4000);

DECLARE exCursor CURSOR FOR
SELECT Column2 FROM table ORDER BY Column1;

OPEN exCursor;

FETCH NEXT FROM exCursor INTO @sqlStmt;

WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE sp_executesql @sqlStmt;

FETCH NEXT FROM exCursor INTO @sqlStmt;
END

CLOSE exCursor;
DEALLOCATE exCursor;

将创建游标以从语句表中查询并检索 sql 语句,按列 1 排序。然后,您获取每个语句并执行它。

了解更多信息

关于sp_executesql的另一件事是您也可以传递参数。我注意到你的陈述相当重复——你可以有一张带有查询的表和一张带有参数的表。如果这是一个长期解决方案,这可能是个好主意。

关于sql - 表的每一行都有sql语句。我如何按顺序运行每个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26653649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com