Kembali di MariaDB Server 10.3, kami menambahkan mode SQL baru (SQL_MODE=ORACLE) untuk menyediakan kompatibilitas dengan subset Oracle PL/SQL, ekstensi prosedural ke Structured Query Language (SQL). Dengan rilis terbaru MariaDB Community Server 10.6, kami melanjutkan perjalanan kami untuk memperluas kompatibilitas PL/SQL MariaDB dengan menambahkan beberapa fungsi seperti ROWNUM()
, ADD_MONTHS()
dan TO_CHAR()
. Ini sangat keren karena beberapa alasan tetapi untuk memulai, MariaDB tetap menjadi satu-satunya database yang mengimplementasikan kompatibilitas Oracle open source sehingga fungsi ini tersedia untuk semua orang. Untuk benar-benar memahami apa artinya, penting bagi kami untuk mengambil langkah mundur agar Anda tahu mengapa kami memulai jalan ini.
Kekuatan Pemrograman Prosedural dan Deklaratif
Dengan menggabungkan kekuatan manipulasi data dari bahasa SQL dengan kemampuan prosedural, pengembang memiliki banyak peluang baru yang menarik. Menggunakan PL/SQL, pengembang memiliki kemampuan untuk mengeksekusi pernyataan SQL yang berfokus pada pendekatan deklaratif "apa yang harus dilakukan" sementara juga diberikan kemampuan untuk mengontrol aliran operasi, atau "bagaimana melakukannya".
Tunggu apa? Oke, simak tradisional berikut ini Pernyataan SQL.
SELECT id, name, has_kids FROM friends;
Sederhana, elegan dan efektif. SQL adalah bahasa yang indah, tetapi memiliki keterbatasan. Misalnya, bagaimana jika Anda ingin mengulang hasil yang dikembalikan dari SELECT
eksekusi pernyataan? Kemudian, saat menguraikan hasil, periksa setiap hasil menggunakan pernyataan bersyarat (mis. jika has_kids
benar) sehingga Anda dapat melakukan operasi tertentu berdasarkan kondisi tersebut?
Catatan singkat :Ini murni hipotetis. Saya yakin jika Anda memiliki teman dengan anak-anak dan teman tanpa anak, Anda memperlakukan mereka semua sama. Tapi, demi contoh ini, katakanlah Anda tidak melakukannya. OKE? Oke, keren.
Tetapi dengan semua iterasi dan kondisi yang terjadi, Anda mungkin mengalami kesalahan. Bukankah lebih baik jika Anda bisa menangani kesalahan (yaitu pengecualian) langsung di sisi database, tanpa harus terlebih dahulu mengembalikan hasil asli kembali ke kode aplikasi untuk diproses? Sayang sekali, karena Anda menggunakan SQL biasa, dan semua itu tidak mungkin.
Jangan takut! Sebagai gantinya, ikut saya ke dunia PL/SQL yang indah!
Melalui penggunaan sesuatu yang dikenal sebagai PL/SQL Block, Anda dapat menggabungkan SQL yang Anda kenal dan sukai dengan kemampuan prosedural yang memungkinkan Anda mengontrol aliran operasi menggunakan fitur seperti kemampuan untuk mendeklarasikan variabel, menangani kondisi, loop melalui data, mengelola pengecualian, dan banyak lagi.
Blok PL/SQL ditangani dalam Server MariaDB, di mana SQL dan pernyataan prosedural diuraikan dan dieksekusi sesuai dengan itu.
Cukup keren, bukan? Ini menjadi jauh lebih baik! Tapi kembali ke contoh kita sebelumnya. Anda dapat menggunakan satu blok PL/SQL untuk menyelesaikan semua yang saya tunjukkan sebelumnya.
Misalnya:
DELCARE CURSOR c IS SELECT id, name, has_kids FROM friends; BEGIN FOR friend_row IN c LOOP IF friend_row.has_kids == true THEN /* Do something */ ELSE /* Do something else */ END IF; END LOOP; EXCEPTION WHEN no_data_found THEN /* Handle no data found */ WHEN others THEN /* Handle all other kinds of exceptions */ END;
Pelajari Lebih Lanjut
Hal-hal yang kuat, bukan? Yah, posting blog ini benar-benar hanya puncak gunung es. Sedikit sesuatu untuk membangkitkan selera Anda, jika Anda mau. Tetapi jika Anda ingin tahu lebih banyak, saya sangat merekomendasikan menonton webinar yang baru-baru ini kami sajikan, MariaDB dan PL/SQL:Menggabungkan Kekuatan SQL dan Pernyataan Prosedural. Di dalamnya, kami menyelami lebih banyak detail tentang mengapa kami menjadikannya misi kami untuk menambah dan memperluas dukungan PL/SQL dan kami menyertakan berbagai contoh, dan demonstrasi pengkodean langsung, yang memberi Anda pandangan langsung tentang bagaimana anda dapat menggunakan PL/SQL dalam MariaDB! Selamat coding, teman-teman!