ERVER - 削除処理 - エラーを発生させる


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内に入るようになった
なるほどね