Variable dan Penamaannya di MySQL
Pada berbagai kondisi, kita memiliki beberapa perintah atau statement SQL dan kita ingin menyimpan hasil eksekusi dari perintah yang satu ke perintah selanjutnya. Sebagai contoh :
- kita mengambil suatu kode transaksi yang kita anggap tidak valid.
- dari kode transaksi yang sudah kita ketahui tersebut kita masukkan data ke suatu audit table.
- kemudian kita hapus data transaksi dari header maupun detilnya, atau ..
- kita rubah saja data transaksi tersebut dengan status "tidak valid"
Bagaimana kita melakukan hal tersebut ? Jika Anda terbayang menggunakan subquery untuk melakukan hal tersebut tentunya akan sangat memberatkan server MySQL sendiri karena perlu banyak cache.
Solusinya adalah dengan menggunakan variable yang berfungsi sebagai "pengingat" nilai tersebut dan dapat direferensikan dengan suatu nama di statement-statement berikutnya yang independen. Tetapi ini tentunya hanya dalam satu sesi koneksi yang sama.
Penamaan variable pada sql memiliki prefix @, artinya setiap nama variable diawali dengan simbol @ diikuti nama variable. Sebagai contoh : @var1, @kode_transaksi, @nilai_awal, dan lain-lain.
Inisialisasi Variable
Inisialisasi variable pada MySQL dapat dilakukan dengan penggunaan perintah SET dan dalam konstruksi perintah lainnya seperti SELECT, syntax dan perbedaannya adalah sebagai berikut :
- SET digunakan untuk inisialisasi variable dengan satu nilai pada suatu waktu dengan penggunaan operator assignment " = " atau " := ".
Syntax :SET @namavar1 = nilai [, @namavar2 = nilai2 [, @namavar = nilai3] ] ;
SET @namavar1 := nilai [, @namavar2 = nilai2 [, @namavar := nilai3] ] ;
atau
Contoh : - SET @kolom_pertama = 'kode_produk';
- SET @nilai1 = 10, @nilai2 = 20, @kolom = "nilai_penjualan";
- dan seterusnya
- SELECT digunakan untuk inisialisasi variable dengan operator assignment " := " dan mengisi variable dengan nilai lain sesuai iterasi hasil row dari eksekusi query. Operator " = " pada statement ini dianggap sebagai operator pembanding nilai (value omparison).Syntax :SELECT @namavar1 := nilai [, @namavar2 := nilai2 [, @namavar := nilai3] ] ;
Contoh : - SELECT @nilai1 := 10, @nilai2 := 20, @kolom := "nilai_penjualan";
- SELECT @nilai1 from (SELECT @nilai1 := 20) T;
- dan seterusnya
Urutan Pemberian Nilai Variable pada SELECT
Jika Anda sudah jelas dengan pemberian nilai variable, mari kita lihat proses urutan proses pemberian nilai ini pada SELECT statement :
- Jika terdapat daftar variable dengan pemisah koma. Maka operasi variable di depan akan didahulukan dan memberi efek kepada variable di belakangnya.
Contoh : - SET @nilai := 10; SELECT @nilai, @nilai := 20; -- Hasilnya 10, 20
- SET @nilai := 10; SELECT @nilai := 10, @nilai; -- Hasilnya 10, 10
- Jika operasi variable terdapat subquery maka operasi tersebut akan terjadi terlebih dahulu dibandingkan query yang memanggil subquery tersebut.
Contoh : - SET @nilai := 20; SELECT @nilai from (select @nilai := 10) as T; -- Hasilnya 10
0 komentar