Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara Menjalankan Create Table DDL Dengan EXECUTE IMMEDIATE Di Oracle Database

Buat Tabel DDL Dengan Eksekusi Segera

Anda pasti berpikir bahwa apa yang bisa menjadi masalah dalam menjalankan DDL CREATE TABLE? Benar, tidak ada masalah selama Anda menjalankannya dengan SQL. Tetapi ketika harus menjalankannya dengan PL/SQL maka itu agak sulit.

Jadi pertama, apa pernyataan DDL di Oracle Database?

DDL adalah singkatan dari Data Definition Language. Menggunakan pernyataan DDL kita dapat membuat atau memodifikasi objek database serta skema. Pernyataan-pernyataan tersebut adalah:

  • BUAT,
  • LEPASKAN dan
  • UBAH.

Itu selalu merupakan praktik yang baik untuk mengatur skema dan objek Anda sebelumnya dan membuatnya di tahap awal proyek Anda. Jika memungkinkan maka kita harus melakukan pekerjaan ini menggunakan SQL. Itu bisa jauh lebih cepat dan jauh lebih bersih. Namun terkadang tidak selalu memungkinkan, dalam situasi tersebut kita dapat mengambil bantuan fitur seperti Native Dynamic SQL di Oracle Database.

SQL Dinamis Asli memungkinkan kita untuk mengeksekusi pernyataan SQL seperti DDL atau DML langsung melalui PL/SQL kita.

Mengapa kita tidak dapat menjalankan DDL melalui program PL/SQL?

Jika Anda masih bertanya-tanya apakah mengeksekusi pernyataan DDL dengan PL/SQL itu rumit, mari kita coba membuat tabel melalui program PL/SQL.

SET SERVEROUTPUT ON;
BEGIN 
    CREATE TABLE tut_82 (
    tut_num NUMBER(3),
    tut_name   VARCHAR2 (50));  
END;
/

Saya tahu pendekatan ini akan menjadi pemikiran pertama Anda jika saya meminta Anda untuk membuat tabel melalui program PL/SQL. Maksud saya, ini terlihat sempurna, apa yang mungkin salah?

Tidak ada yang salah dengan program ini, satu-satunya masalah di sini adalah PL/SQL tidak secara langsung mendukung pernyataan DDL. Untuk mengeksekusi pernyataan DDL menggunakan PL/SQL kita perlu mengambil bantuan paket DBMS_SQL atau cara yang lebih maju dan lebih baik dari NATIVE DYNAMIC SQL.

Anda dapat memeriksa ini sendiri. Silakan dan jalankan program di atas. Pada eksekusi Anda akan mendapatkan kesalahan yang terlihat seperti yang ditunjukkan pada gambar di bawah ini.

Jadi, bagaimana cara yang tepat untuk mengeksekusi DDL melalui program PL/SQL?

Anda dapat menjalankan DDL melalui program PL/SQL baik dengan menggunakan paket DBMS_SQL atau dengan menggunakan pernyataan Execute Immediate dari Native Dynamic SQL. Opsi terakhir adalah yang paling banyak digunakan, khususnya saat ini karena kinerjanya yang lebih baik dan sintaks yang mudah dipelajari.

Bagaimana cara menjalankan CREATE TABLE DDL menggunakan Execute Immediate di Oracle Database?

Langkah 1:Siapkan DDL Anda terlebih dahulu.

Meskipun tidak perlu, tapi saya sarankan Anda untuk mempersiapkan DDL Anda terlebih dahulu, dengan begitu Anda setidaknya bisa menghilangkan kemungkinan kesalahan sintaksis karena sintaks dari pernyataan DDL Anda.

Dalam kasus kami, kami ingin menjalankan DDL CREATE TABLE jadi mari kita tulis DDL untuk membuat tabel terlebih dahulu.

CREATE TABLE tut_82 (
    tut_num    NUMBER (3),
    tut_name   VARCHAR2 (50)
) 

Pernyataan DDL ini akan membuat tabel dengan nama tut_82 dengan dua kolom tut_num dari tipe data NUMBER dan tut_name dari tipe data VARCHAR2.

Perhatikan di sini, jangan akhiri pernyataan SQL Anda (yang ingin Anda jalankan dengan EXECUTE IMMEDIATE) dengan titik koma.

Langkah 2:Jalankan DDL Anda melalui program PL/SQL menggunakan Execute Immediate.

Setelah DDL Anda siap, selanjutnya Anda harus menulis program PL/SQL Anda.

SET SERVEROUTPUT ON;
DECLARE
    ddl_qry     VARCHAR2 (150);
BEGIN
    ddl_qry := 'CREATE TABLE tut_82(
                tut_num     NUMBER(3),
                tut_name    VARCHAR2(50)
                )';
    EXECUTE IMMEDIATE ddl_qry;
END;
/

Pada blok PL/SQL di atas kita mendeklarasikan sebuah variabel dengan nama ddl_qry. Kami menggunakan variabel ini untuk menyimpan pernyataan DDL kami yang kami siapkan pada langkah 1.

Info:
Satu hal yang harus Anda pastikan di sini adalah, variabel yang akan Anda gunakan untuk menyimpan pernyataan SQL yang ingin Anda jalankan dengan pernyataan EXECUTE IMMEDIATE harus selalu bertipe data VARCHAR2 dan memiliki banyak lebar data sehingga DDL Anda dapat dengan mudah masuk ke dalamnya.

Di bagian eksekusi blok PL/SQL ini, kami memiliki dua pernyataan yang dapat dieksekusi. Pernyataan-pernyataan tersebut adalah:

Pernyataan 1:Pernyataan tugas

Pada pernyataan pertama kita telah menyimpan Create Table DDL kita ke dalam variabel ddl_qry menggunakan operator penugasan (Dalam PL/SQL operator penugasan adalah kombinasi titik dua dan sama dengan tanda).

Pernyataan 2:Pernyataan Perkasa Eksekusi Segera

Pernyataan kedua adalah Pernyataan Jalankan. Untuk menjalankan DDL secara dinamis, pertama-tama Anda harus menulis frasa khusus 'Execute Immediate' diikuti dengan nama variabel tempat Anda menyimpan DDL seperti yang kami lakukan di atas.

Jika mau, Anda juga dapat menulis DDL langsung setelah frasa 'Frase yang Dipesan'. Ini sepenuhnya merupakan pilihan pribadi. Saya suka menggunakan pendekatan sebelumnya di mana kami menggunakan Variabel untuk menahan DDL karena pertama-tama itu membuat kode Anda terlihat rapi dan bersih selain itu juga membuat pelacakan kesalahan jauh lebih mudah.

Tapi Manish, saya juga ingin mempelajari cara lain untuk menulis pernyataan DDL.

Tentu, tidak ada salahnya mempelajari sesuatu yang baru.

BEGIN
    EXECUTE IMMEDIATE 'CREATE TABLE tut_82(
                	tut_num     NUMBER(3),
                	tut_name    VARCHAR2(50)
                )';
END;
/

Pendekatan alternatif untuk kode di atas adalah dengan menulis pernyataan DDL tepat di dalam pernyataan Execute Immediate Anda. Untuk ini, Anda hanya perlu menulis dulu frasa khusus Execute Immediate diikuti dengan pernyataan DDL yang ingin Anda jalankan secara dinamis.

Dalam salah satu cara tersebut, Anda hanya perlu mengurus beberapa hal saat menulis DDL untuk Execute Immediate.

Pertama:Selalu sertakan pernyataan SQL Anda menjadi sepasang Kutipan Tunggal

Selalu ingat bahwa Execute Immediate memperlakukan DDL atau DML atau pernyataan SQL lain yang didukung yang ingin Anda jalankan secara dinamis sebagai string tipe data VARCHAR2 dan di PL/SQL kami menyertakan karakter atau string VARCHAR2 apa pun ke dalam sepasang tanda kutip tunggal. Jadi selalu pastikan untuk menyertakan pernyataan SQL Anda yang ingin Anda jalankan menggunakan Execute Immediate menjadi sepasang tanda kutip tunggal.

Kedua:Perhatikan titik koma.

Jika Anda menulis pernyataan SQL untuk Execute Immediate maka Anda harus meletakkan titik koma (;) tepat di luar tanda kutip tunggal di mana Anda menyertakan pernyataan SQL Anda. Di sisi lain jika Anda menulis blok PL/SQL untuk eksekusi dinamis menggunakan Execute Immediate maka Anda harus meletakkan titik koma di akhir blok PL/SQL Anda tepat sebelum tanda kutip tunggal penutup serta tepat di luar tanda kutip tunggal penutup.

Demikian tutorial lengkap cara menjalankan statement Create Table DDL menggunakan statement EXECUTE IMMEDIATE dari Native Dynamic SQL di Oracle Database. Semoga Anda menikmatinya dan belajar sesuatu yang baru.

Pastikan untuk Berlangganan ke saluran YouTube saya karena pada tutorial berikutnya kita akan mempelajari sesuatu yang baru dan menarik tentang SQL Dinamis. Anda juga dapat mengikuti saya di Twitter dan Facebook saya.

Terima kasih dan semoga harimu menyenangkan!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi yang setara untuk DATEADD() di Oracle

  2. Mengapa saya mendapatkan Pengecualian OutOfRange di Fungsi GetOrdinal bidang CLOB ini?

  3. Cara Mendapatkan Tanggal Saat Ini di Oracle

  4. Ubah pemisah fungsi WM_CONCAT dari Oracle 11gR2

  5. Penasihat Kompresi 11gR2 =Jahat