ZDIRY-TUFWT-EBONM-EYJ00-IDBLANTER.COM
ZDIRY-TUFWT-EBONM-EYJ00
BLANTERWISDOM105

Cara Debugging Stored Procedures SQL Server

2/14/2020

Debugging pada Sql Server ini tidak sama dengan cara debugging pada Visual Studio yang mana kita dapat memilih salah satu baris lokasi proses pause sejenak dan memeriksa value yang dihasilkan. Pada SQL Server apabila anda ingin membuat sebuah Stored Procedures gunakanlah script di bawah ini dan disetiap tulisan berwarna hijau anda dapat mengisinya dengan parameter atau proses insert dan update.

CREATE PROCEDURE [dbo].[SP_Insert]
       @ro_v_err_mesg varchar(2000) output
       --Tambahkan parameter
AS
BEGIN TRY
       SET NOCOUNT ON;
       Declare
              @l_n_process_status smallint = 0,
              @l_n_return_value smallint = 0
        --Tambahkan parameter
       if @l_n_process_status <> 0
       begin
              return @l_n_process_status
       end

       --INPUTKAN PROSES INSERT ATAU UPDATE

       return @l_n_process_status
END TRY
BEGIN CATCH
       DECLARE @ErrorMessage NVARCHAR(4000),
                     @ErrorSeverity INT,
                     @ErrorState INT,
                     @ErrorLine INT

       Select @ErrorMessage =ERROR_MESSAGE(),
                 @ErrorSeverity = ERROR_SEVERITY(),
                 @ErrorState = ERROR_SEVERITY(),
                 @ErrorLine =ERROR_LINE()

       set @l_n_return_value = 2
       Set @ro_v_err_mesg = 'ERROR: SP_Insert: ' + @ErrorMessage + ', at line = ' + CAST(@ErrorLine as varchar)

       PRINT 'SP_Insert: ' + @ErrorMessage + ', at line = ' + CAST(@ErrorLine as varchar)

       RETURN @l_n_return_value
END CATCH

Penggunaan script ini akan membuat setiap kali ada proses error maka pesan yang muncul akan menampilkan dimana baris atau line terjadinya error. Misalkan pada kasus Converting date and/or Time From Charater String di bawah ini,
Stored Procedures SQL Server
Pada gambar di atas menunjukkan baris atau line mana terjadi error, pada kasus tersebut error terjadi pada line ke 63. Namun sebelumnya anda aktifkan terlebih dahulu penomoran baris pada SQL Server pada menu Tool > Options.
Line Number Text Editor Sql Server

Setelah mengaktifkan penomoran line pada Text Editor Sql Server sekarang anda dapat memeriksa lokasi baris dengan cara klik kanan mouse pada Stored Procedures yang anda buat dan pilih menu modify.

Stored Procedures SQL Server

Sorot baris pertama hingga baris sebelum baris pada text ALTER PROCEDURE, lalu hapuslah baris yang disorot tersebut. Dengan begitu anda dapat melihat lokasi line sebenarnya.
Stored Procedures SQL Server

Solusi Pesan Error Converting date, Time From Charater String

Sekarang periksa line yang ditunjukan pada pesan error yaitu line ke 63.
Stored Procedures SQL Server
Untuk memeriksanya anda dapat membandingkan dengan Table TB_M_PROJECT. Perhatikan function getDate(). getDate() adalah function yang menghasilkan Date/Time namun pada Insert getDate() di inputkan pada kolom Created_By yang notabene adalah varchar, pastinya type antara getDate() dan CREATED_BY berbeda sehingga terjadinya error. Coba periksa pada kolom lain apakah ada yang menggunakan Type Data Date atau Datetime. Jika ada berarti terjadi kesalahan input data karena tertukar lokasi.

Solusi Pesan Error Cannot Insert The Value Null Into Column

Pesan error ini terjadi karena kolom yang dalam kondisi tidak boleh NULL atau pada Create Table nya NOT NULL, namun pada Insert tidak diisi. Atau mungkin Seseorang programmer membuat database yang biasanya Kolom dengan embel-embel ID biasanya dikondisikan sebagai IDENTITY(1,1) atau autoincremental seperti di MYSQL. Karena lupa menggunakan IDENTITY(1,1) pada saat Create Table tidak digunakan sedangkan Insert pada saat Stored Procedures tidak dilakukan penginputan data.

Stored Procedures SQL Server

Misalkan pesan error terjadi pada line ke 63 pada stored procedures, jika misalkan input data menggunakan parameter (@) anda dapat mencobanya dengan cara mendeclarekan parameter tersebut dengan value, seperti di bawah ini,
Declare
       @ri_v_projek_id     bigint,
       @ri_v_projek_cd      varchar(20) = 'ACD12',
       @ri_v_projek_name varchar(30) ='BBAD',
       @ri_v_action  varchar(20) = 'Add',
       @ri_v_user_id varchar(30) = 'dummy'

insert into TB_M_PRO
                     (
                            [PROJECT_CD]
                           ,[PROJECT_NAME]
                           ,[CREATED_DT]
                           ,[CREATED_BY]
                     )
                     values(
                           @ri_v_projek_cd,
                           @ri_v_projek_name,
                           getdate(),
                           @ri_v_user_id
                     )
Setelah dicoba kita langsung mengetahui kolom mana yang error,
Share This :

0 Comments