Ketika SET NOCOUNT diset ON dan ketika SET NOCOUNT diset OFF di Microsoft SQL Server
Ketika kita mengeksekusi perintah SQL 'Select', 'Insert','Update', dan 'Delete'
maka Microsoft SQL Server akan mengembalikan jumlah baris yang terpengaruh oleh perintah-perintah tersebut.
Contoh :
select * from TbPOdet
Hasil Eksekusi perintah select dari tabel 'TbPOdet' diatas :
NOBUKTI URUT KODEBRG QNT
-------------------- ----------- -------------------- ---------
000001/PO-AA/02/2008 1 A001090001 1.0000
000001/PO-AA/02/2008 2 A001090003 1.0000
000002/PO-AA/02/2008 1 A006300001 1.0000
000003/PO-AA/02/2008 1 A001090001 1.0000
000001/PO-AA/03/2008 1 A005290001 1.0000
000002/PO-AB/03/2008 1 A010010005 1.0000
000001/PO-AA/02/2009 1 A001090001 1.0000
000002/PO-AA/02/2009 1 A009340001 1.0000
000002/PO-AA/02/2009 2 A009310001 1.0000
000003/PO-AC/02/2009 1 A001090011 1.0000
(10 row(s) affected)
Pada akhir Eksekusi perintah diatas ditampilkan jumlah baris yang terpengaruh oleh sql tersebut yaitu '10 row(s) affected'
kalo perintah ini di eksekusi di query analyzer memang tidak mempunyai dampak yang tidak baik, Namun Stored Procedure
yang berisi seperti perintah diatas apabila diakses dari sebuah aplikasi seperti PowerBuilder maka aplikasi akan tertutup.
Masalah diatas dapat dengan perintah SET NOCOUNT di set ON. dengan menggunakan perintah ini maka Microsoft SQL Server tidak
akan menghasilkan '(10 row(s) affected)' pada akhir eksekusi query tapi hanya mengembalikan baris datanya saja.
Contoh :
SET NOCOUNT ON
select * from TbPOdet
SET NOCOUNT OFF
Hasil Eksekusi perintah select dari tabel 'TbPOdet' diatas :
NOBUKTI URUT KODEBRG QNT
-------------------- ----------- -------------------- ---------
000001/PO-AA/02/2008 1 A001090001 1.0000
000001/PO-AA/02/2008 2 A001090003 1.0000
000002/PO-AA/02/2008 1 A006300001 1.0000
000003/PO-AA/02/2008 1 A001090001 1.0000
000001/PO-AA/03/2008 1 A005290001 1.0000
000002/PO-AB/03/2008 1 A010010005 1.0000
000001/PO-AA/02/2009 1 A001090001 1.0000
000002/PO-AA/02/2009 1 A009340001 1.0000
000002/PO-AA/02/2009 2 A009310001 1.0000
000003/PO-AC/02/2009 1 A001090011 1.0000
Meskipun SET NOCOUNT diset ON tidak mengembalikan jumlah baris yang terpengaruh tapi fungsi @@ROWCOUNT tetap diupdate.
Hal ini bisa dilihat dari contoh dibawah ini.
Contoh :
SET NOCOUNT ON
select * from TbPOdet
print @@Rowcount
print 'Adalah Jumlah Record Pada Eksekusi Terakhir'
SET NOCOUNT OFF
Hasil Eksekusi perintah select dari tabel 'TbPOdet' diatas :
NOBUKTI URUT KODEBRG QNT
-------------------- ----------- -------------------- ---------
000001/PO-AA/02/2008 1 A001090001 1.0000
000001/PO-AA/02/2008 2 A001090003 1.0000
000002/PO-AA/02/2008 1 A006300001 1.0000
000003/PO-AA/02/2008 1 A001090001 1.0000
000001/PO-AA/03/2008 1 A005290001 1.0000
000002/PO-AB/03/2008 1 A010010005 1.0000
000001/PO-AA/02/2009 1 A001090001 1.0000
000002/PO-AA/02/2009 1 A009340001 1.0000
000002/PO-AA/02/2009 2 A009310001 1.0000
000003/PO-AC/02/2009 1 A001090011 1.0000
10
Adalah Jumlah Record Pada Eksekusi Terakhir
No comments:
Post a Comment