Dynamic SQL

Kadang kita dihadapi oleh situasi yang mengharuskan sebuah aplikasi dapat bekerja atau mengeksekusi SQL Statement yang bersifat dinamis. Maksud dinamis ini misalkan nama table yang kadang gabungan antara nama object dan tahun, atau susunan field yang diinginkan selalu berubah-ubah.

Kondisi tersebut diatas dapat diatasi dengan menggunakan Dynamic SQL yaitu dengan memanfaatkan statement SP_EXECUTESQL.

Namun dalam penggunaan SP_EXECUTESQL ini harap diperhatikan sisi keamanannya, karena akan rawan sekali terjadi SQL Injection. Untuk mengeliminirnya maka saat menggunakan SP_EXECUTESQL dampingilah dengan penggunaan parameter.

Syntax dari SP_EXECUTESQL adalah :

EXECUTE SP_EXECUTESQL <SQL>, <Parameter Definitions>, <Parameter Values>

Contohnya adalah sebagai berikut : misalkan kita memiliki query seperti berikut (saya menggunakan database adventureworks) :

select [EmployeeID],LoginID from HumanResources.Employee
where MaritalStatus='M' and Gender='F'

lalu untuk mengeksekusi query tersebut dengan Dynamic SQL adalah sebagai berikut :

Declare @sql nvarchar(500)='select [EmployeeID],LoginID from HumanResources.Employee
where MaritalStatus=@MS and Gender=@G';
Declare @ParamDef nVarchar(50) = '@MS Varchar(5), @G Varchar(5)';

execute sp_executesql @sql, @ParamDef, @MS='M', @G='F';

Demikian semoga bermanfaat.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.