Sisipkan DML Dengan Variabel Bind:Mengapa?
Mari kita potong untuk mengejar! Dua keuntungan terbesar dari variabel mengikat adalah keamanan terhadap injeksi SQL dan peningkatan kinerja dengan mengurangi parsing keras. Karena kelebihan ini, penggunaan variabel bind dalam kode Anda tidak hanya disarankan tetapi juga disarankan.
Tidakkah akan menjadi lapisan gula pada kue jika kita bisa menemukan cara untuk menggunakan Variabel Bind dengan Native Dynamic SQL? Jika Anda bertanya-tanya demikian, maka teman-teman terkasih, Anda berada di tempat yang tepat karena kami akan melakukan hal itu di blog ini.
Apa yang dimaksud dengan variabel pengikat?
Kita dapat mendefinisikan variabel bind sebagai variabel yang kita buat di SQL*Plus dan kemudian dirujuk di PL/SQL. Selanjutnya kita dapat mendeklarasikan variabel Bind di mana saja di lingkungan host. Oleh karena itu variabel bind juga dikenal sebagai variabel host.
Anda dapat membaca lebih lanjut tentang variabel bind dalam tutorial PL/SQL 6 di sini.
Bagaimana cara menggunakan variabel bind dengan Native Dynamic SQL?
Untuk menggunakan variabel bind dalam SQL dinamis, kita perlu mengambil bantuan “Menggunakan Klausa ” dari Execute Immediate statement.
Apakah pernyataan Menggunakan Klausa Eksekusi Segera?
Dalam SQL statis kami harus menentukan nilai untuk variabel bind setelah eksekusi program PL/SQL. Sementara di Dynamic SQL kita harus menyebutkan nilai terlebih dahulu untuk semua variabel bind. Yang sama yang digunakan dalam pernyataan SQL yang ingin kita eksekusi secara dinamis menggunakan Execute Immediate.
Oleh karena itu, untuk menentukan nilai untuk semua variabel pengikatan, kami menggunakan klausa USING dari Execute Immediate Statement. Dengan menerapkan klausa 'USING', kami mencantumkan semua nilai untuk setiap variabel bind yang digunakan dalam pernyataan SQL yang ingin kami eksekusi secara dinamis.
Sekarang kita telah mempelajari apa itu variabel bind dan Menggunakan Klausa dari pernyataan Execute Immediate, mari kita lakukan sebuah contoh.
Contoh Eksekusi Segera dengan Menggunakan Klausa
Untuk demonstrasi kami akan memasukkan data ke dalam tabel. Dan untuk itu kita akan menggunakan pernyataan Execute Immediate. Selain itu, untuk meningkatkan keamanan dan kinerja, kami akan menggunakan variabel bind dengan Sisipkan DML.
Untuk melakukan itu, pertama-tama kita membutuhkan tabel di mana kita dapat memasukkan data. Karena itu, mari kita cepat membuatnya. Dan seperti biasa saya akan membuat kode sesederhana mungkin untuk memudahkan pemahaman konsep.
Langkah 1:Buat tabel
CREATE TABLE stu_info( student_name VARCHAR2 (20) );
Langkah 2:Siapkan pernyataan DML
Ini adalah praktik pemrograman yang baik untuk mempersiapkan pernyataan SQL Anda, yang ingin Anda jalankan menggunakan eksekusi segera, sebelumnya. Dengan cara ini Anda akan mengurangi kemungkinan kesalahan sintaks.
Batasan penulisan DML untuk Execute Immediate akan tetap sama seperti untuk pernyataan DDL. Mirip dengan pernyataan DDL Pernyataan DML tidak boleh diakhiri dengan titik koma. Oleh karena itu, dengan mengingatnya, mari kita tulis pernyataan INSERT.
INSERT INTO stu_info (student_name) VALUES (:stu_name)
Dalam DML INSERT standar kami biasanya menulis data ke dalam kurung klausa nilai. Selanjutnya pada eksekusi, data ini akan dimasukkan ke dalam kolom yang sesuai. Tapi seperti yang Anda lihat, di sini kita telah menggunakan variabel bind “:stu_name” sebagai ganti hard coding nilai spesifik apa pun untuk dimasukkan ke dalam tabel.
Langkah 3:Tulis kode PL/SQL
Langkah terakhir dalam siklus ini adalah menjalankan INSERT DML dengan variabel bind dengan menerapkan klausa USING dari Execute Immediate Statement of Native Dynamic SQL.
SET SERVEROUTPUT ON; DECLARE sql_smt VARCHAR2 (150); BEGIN sql_smt := 'INSERT INTO stu_info (student_name) VALUES (:stu_name)'; EXECUTE IMMEDIATE sql_smt USING 'Steve'; END; /
Mari kita pahami apa yang akan terjadi pada eksekusi blok PL/SQL ini. Saat Anda akan menjalankan program ini, mesin PL/SQL akan mengganti nilai ini 'Steve' sebagai ganti variabel bind :stu_name dan kemudian jalankan INSERT DML yang akan memasukkan nilai ini ke dalam tabel yang disebutkan.
Selanjutnya ada beberapa hal yang perlu Anda perhatikan saat menulis program PL/SQL di atas di akhir Anda.
- Pastikan untuk menyertakan pernyataan INSERT DML atau Any SQL yang ingin Anda jalankan menggunakan Execute Immediate menjadi sepasang tanda kutip tunggal. Juga, ingatlah untuk mengakhiri pernyataan penugasan (baris 5) serta pernyataan Execute Immediate Anda dengan titik koma.
- Nilai yang Anda tetapkan ke variabel bind Anda melalui klausa USING harus sama atau kompatibel dengan tipe data kolom tabel tempat Anda memasukkannya. Misalnya dalam kasus kami, kami memasukkan nama 'Steve' yang merupakan string karakter ke dalam kolom student_name dari tabel stu_info yang merupakan tipe data Varchar2. Tipe data karakter sangat kompatibel dengan tipe data Varchar2.
Melalui program ini kami belajar dua hal yang sangat penting.
- Cara menggunakan INSERT DML dengan Execute Immediate of Dynamic SQL dan
- Cara menerapkan klausa USING untuk menetapkan nilai ke variabel bind yang digunakan dalam kueri SQL yang ingin kita jalankan secara dinamis.
Selain itu, pastikan untuk memeriksa video karena di sana saya telah membahas cara menangani "ORA-01008:Not All Variables Bound" Error. Saya yakin Anda tidak ingin melewatkan solusi untuk kesalahan ini karena ini sangat penting dari perspektif sertifikasi database oracle.
Juga, pantau terus karena dalam tutorial berikutnya kita akan belajar bagaimana menangani beberapa variabel pengikatan dengan menerapkan klausa Using dari eksekusi langsung di Oracle Database.
Semoga Anda belajar sesuatu yang berharga dari blog ini. Sementara itu, silakan bagikan dengan teman-teman Anda di Facebook, twitter, WhatsApp, atau media apa pun yang menurut Anda nyaman. Juga, berlangganan saluran YouTube saya untuk tutorial yang lebih cepat dan menarik. Terima kasih dan semoga harimu menyenangkan!