Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kembalikan pesan kesalahan dari prosedur tersimpan

Anda mungkin ingin mulai menggunakan COBA..CATCH blokir dalam prosedur Anda

Jadi prosedur Anda dapat ditulis ulang sebagai:

CREATE PROCEDURE spTest_Delete @ID INT
AS
BEGIN
    SET NOCOUNT ON;
    BEGIN TRY
        BEGIN TRANSACTION
            DELETE
            FROM Test
            WHERE ID = @ID;
        COMMIT TRANSACTION
    END TRY
    BEGIN CATCH
        IF @@TRANCOUNT > 0
            ROLLBACK TRANSACTION
        SELECT ERROR_NUMBER(), ERROR_MESSAGE();
    END CATCH
END

Juga, harap perhatikan bahwa Anda menjalankan sebagai pernyataan penghapusan tunggal. Artinya tidak perlu dibungkus dalam suatu transaksi. Ini pertanyaan menjelaskan alasannya.

Kode Anda menjadi ini:

CREATE PROCEDURE spTest_Delete @ID INT
AS
BEGIN
    SET NOCOUNT ON;
    BEGIN TRY
        DELETE
        FROM Test
        WHERE ID = @ID;
    END TRY
    BEGIN CATCH
        SELECT ERROR_NUMBER(), ERROR_MESSAGE();
    END CATCH
END

Sekarang mengapa @errMessage Anda selalu NULL? Karena ERROR_MESSAGE() berlaku HANYA DI CATCH BLOCK. Itu tertulis di dokumentasi :

Menggunakan TRY..CATCH di Transact-SQL mengatakan ini:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah saya menentukan pemecah kata mana yang digunakan saat membuat indeks teks lengkap mssql?

  2. SQL Server 2005/2008 Group By pernyataan dengan parameter tanpa menggunakan SQL dinamis?

  3. Apa saja Jenis Kendala yang Tersedia di SQL Server - Tutorial SQL Server / T-SQL Bagian 50

  4. Permintaan untuk mendapatkan hanya angka dari string

  5. Scope_Identity() mengembalikan nilai yang salah diperbaiki?