0

这与这个问题有关,但略有不同,我有插入记录的 while 循环,即使某些插入失败,我也希望它继续。因此,insertrecords 过程插入记录,方法是在临时表上一次执行前 50 行的 where。

问题是如果插入记录中的任何插入失败,它将不会继续?如何修改 sql 以继续接下来的 50 行,即使当前 50 条记录失败。我想sybase中是否有类似try/catch异常处理的东西?

 SELECT id INTO #temp FROM myTable 
    -- Loop through the rows of the temp table
    WHILE EXISTS(SELECT 1 FROM #temp)
    BEGIN
    BEGIN TRANSACTION
        exec insertrecords       
    IF @@error = 0
    begin
        print 'commited'
        commit
    end
    else
    begin
        print 'rolled back'
        rollback
    end
        DELETE TOP 50 FROM #temp order by id
    END
    -- Drop the temp table.
    DROP TABLE #temp
4

1 回答 1

-1

尝试将内容放在您的 while 块内 try cactch 中。

注意: 下面的示例是在 SQL 中,在 sybase 中尝试类似的代码。

`WHILE(SOME CONDITION)

 BEGIN --start of while block

    BEGIN TRY-start of try block

      --your code here

    END TRY

     BEGIN CATCH

       PRINT ERR_MESSAGE();

       END CATCH

  END --end of while loop.
 `
于 2013-10-15T19:26:36.360 回答