Pada SQL Server terdapat sebuah prosedur untuk mengeksekusi query yang disimpan pada variable. Dengan ini kita dapat mengirimkan parameter query dari program sehingga query yang dihasilkan lebih dinamis.
Store procedure yang digunakan adalah “sp_executesql”. Untuk menjalakan sama seperti store procedure lainnya membutuhkan parameter dgn format sederhana:
exec sp_executesql [perintah sql]
Atau juga perintah sql tersebut bisa ditaruh di variable:
declare @ssql nvarchar(max)
set @ssql=N’select * from ttable’
exec sp_executesql @ssql
Masalah yang bisa muncul adalah ketika ingin menambahkan kriteria untuk filtering. Misalnya akan menambahkan filter berupa string, sedangkan query sendiri berupa string. Hal ini bisa diakali dengan 2 cara :
1. Dengan setting “quoted_identifier” OFF (untuk mengenalkan “double quote”) atau ON (tidak menggunakan “double quote”)
set quoted_identifier OFF
Declare @ssql nvarchar(max)
set @ssql=’select * from ttable where tcolumn=”filter”‘
exec sp_executesql @ssql
isi dari @ssql adalah
select * from ttable where tcolumn=”filter”
karena quote identifier disetting off, maka perintah diatas tidak akan error, tetapi jika diganti
set quoted_identifier OFF
maka perintah tersebut akan error.
2. Menambahkan “single quote” sebanyak 2x sebagai pengganti “double quote” (yang mengapit string value)
Declare @ssql nvarchar(max)
set @ssql=’select * from ttable where tcolumn=”filter”’
exec sp_executesql @ssql
String value “filter” diapit oleh “single quote” sebanyak 2x (bukan double quote), isi dari variable @ssql adalah
select * from ttable where tcolumn=’filter’
Gw adalah seorang manusia yang punya rasa penasaran yang sangat besar. Makanya jangan ngomongin sesuatu yang aneh agar gw bisa tidur nyenyak...hehehe
Nick gw : CyberCatZone. Hobby gw : Bikin program, Utik-utik jaringan, Browsing, Chatting de El El dah yang penting mambu komputer :D . Kalo ada yang mao share ama gw soal apa aja ( yang penting bukan soal duid, xixixi ) bisa lewat ym : cybercatzone or sonic_error, atau gtalk : cybercatzone
Segitu ah perkenalan dari gw, kalo mau lebih detail mah dateng aja ke rumah ^0^
Leave a reply