Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 无论while循环的范围如何,一个事务是否可以有多个提交_Sql_Sql Server - Fatal编程技术网

Sql 无论while循环的范围如何,一个事务是否可以有多个提交

Sql 无论while循环的范围如何,一个事务是否可以有多个提交,sql,sql-server,Sql,Sql Server,以下是SQL Server存储过程。在事务开始时有两个提交,如下所示。这是否有效(开始在while循环中,第一次提交在同一while循环中,但第二次提交在第二次while循环中)?如果没有,解决办法是什么 请帮忙 IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'DELETE_COBOC_DATA') DROP PROCEDURE DELETE_COBOC_DATA GO CREATE PROCEDURE DEL

以下是SQL Server存储过程。在事务开始时有两个提交,如下所示。这是否有效(开始在while循环中,第一次提交在同一while循环中,但第二次提交在第二次while循环中)?如果没有,解决办法是什么

请帮忙

IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'DELETE_COBOC_DATA')
DROP PROCEDURE DELETE_COBOC_DATA
GO

CREATE PROCEDURE DELETE_COBOC_DATA @ORGDN VARCHAR(100), @CHUNK VARCHAR(10) 
AS
BEGIN
    -- some code that executes before while           
    WHILE (@NUM_ROWS_TMPTRADMIN > 0) 
    BEGIN               

        BEGIN TRANSACTION
            -- executes some code
        COMMIT TRANSACTION                              
    END
    -- some more code
    WHILE @NUM_ROWS_TMPDIR > 0
    BEGIN
        -- code code code
        COMMIT TRANSACTION
        -- code code code
    END
    -- some more code here as well
END

据我所知,MySQL允许这样做,您不能提交同一事务两次。您可以有嵌套的事务,但不能有“部分”提交,这与事务的概念相矛盾(要么全有,要么全无)。如果两个提交都被执行,第二个提交将抛出一个错误

The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION

仅供参考:添加问题时,编辑框上方有工具栏。其中一个按钮显示为
{}
,悬停在上面表示代码示例。:)选择代码块并单击该按钮将格式化问题中的代码。