0

これはこの質問に関連していますが、少し異なります。レコードを挿入するwhileループがあり、一部の挿入が失敗しても続行したいです。そのため、insertrecords プロシージャは、一度に上位 50 行に対して一時テーブルの where を実行することにより、レコードを挿入します。

問題は、insertrecords 内のいずれかの挿入が失敗した場合に続行されないことですか? 現在の 50 レコードで失敗した場合でも、次の 50 行を続行するように SQL を変更するにはどうすればよいですか。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