これはこの質問に関連していますが、少し異なります。レコードを挿入する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