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,
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.
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.
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.
Solusi Pesan Error Converting date, Time From Charater String
Sekarang
periksa line yang ditunjukan pada pesan error yaitu line ke 63.
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.
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