RAISEERROR() やタイムアウト系のエラー発生方法だとダメなとき
削除処理
テーブルがないとき
DEL.SQL
BEGIN TRY
DELETE TABLE toDeleteTable
END TRY
BEGIN CATCH
RETURN 1
END CATCH
出力:コンパイルエラー
テーブル自体を削除するとコンパイルエラーしてBEGIN CATCH内に入らないのでダメ
実装方法
テーブルがないとき
del.sql
BEGIN TRY
DECLARE @SQL VARCHAR(2000)
SET @SQL = 'DELETE TABLE toDeleteTable'
EXEC (@SQL)
END TRY
BEGIN CATCH
RETURN 1
END CATCH
出力:-1
CATCH内に入るようになった
なるほどね