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

Buat Tabel DDL Dengan Jalankan Segera Di Oracle Database Bagian 2

Buat Tabel DDL Dengan Eksekusi Segera

Ada dua cara untuk menulis kueri Buat tabel DDL untuk pernyataan Langsung dari SQL Dinamis Asli di Oracle Database. Kami telah membahas salah satunya di tutorial terakhir. Cara pertama yang kita bahas di tutorial sebelumnya mungkin adalah cara termudah untuk menulis query SQL untuk Dynamic SQL. Tapi itu tidak menghentikan kami untuk belajar lebih jauh. Jadi mari kita lanjutkan dan pelajari yang kedua.

Jadi dalam tutorial ini kita akan mempelajari metode kedua penulisan DDL CREATE TABLE untuk Dynamic Execution menggunakan Execute Immediate Statement.

Karena tutorial ini merupakan kelanjutan dari yang sebelumnya, jadi saya meminta Anda untuk mengunjungi blog itu terlebih dahulu untuk pemahaman yang lebih baik. Karena itu, mari kita mulai tutorialnya.

Langkah1:Siapkan DDL CREATE TABLE.

Siapkan kueri SQL Anda sebelumnya yang ingin Anda jalankan secara dinamis. Ini akan mengurangi kebingungan kode &juga meminimalkan kesalahan sintaksis.

BUAT TABEL tut_83 ( tut_num NUMBER(5), tut_name VARCHAR2 (50), CONSTRAINT cons1_col1_pid_pk PRIMARY KEY (tut_num) )

Inilah DDL CREATE TABLE kami. Kecuali dari nama yang diubah dan batasan kunci utama yang ditambahkan, DDL ini cukup mirip dengan yang kita buat di tutorial terakhir.

Langkah 2:Tulis Blok PL/SQL untuk Eksekusi Dinamis dari pernyataan DDL.

Sekarang kita telah menyiapkan CREATE TABLE DDL. Mari kita tulis program PL/SQL untuk mengeksekusinya secara dinamis.

SET SERVEROUTPUT ON;DECLARE ddl_qry VARCHAR2(150);BEGINddl_qry :='BUAT TABEL tut_83('|| 'tut_num NUMBER(3),'|| 'tut_name VARCHAR2(50)'|| ')';JALANKAN SEGERA ddl_qry;END;/

Mari kita lihat apa yang kami lakukan dalam program ini.

Bagian Deklarasi .

MENNYATAKAN ddl_qry VARCHAR2 (150);

Di bagian deklarasi blok PL/SQL kami, kami mendeklarasikan variabel dengan nama ddl_qry. Variabel ini akan menyimpan DDL CREATE TABLE kita yang akan kita jalankan menggunakan pernyataan Execute Immediate.

Sesuai tutorial terakhir Execute Immediate memperlakukan semua pernyataan SQL sebagai string tipe data VARCHAR2. Itulah sebabnya kami mendeklarasikan variabel ddl_qry sebagai tipe data VARCHAR2.

Bagian Eksekusi.

Tepat setelah bagian deklarasi, kami memiliki bagian eksekusi tempat semua kesenangan terjadi.

BEGIN ddl_qry :='BUAT TABEL tut_83 ('|| 'tut_num NUMBER (5),'|| 'tut_name VARCHAR2 (50),'|| 'CONSTRAINT cons1_col1_pk PRIMARY KEY (tut_num)'|| ')'; LAKUKAN SEGERA ddl_qry;END;/

Bagian eksekusi ini hanya terdiri dari dua pernyataan:

  1. Pernyataan tugas
  2. Jalankan pernyataan Segera

Pernyataan pertama yang merupakan “Pernyataan Penugasan” membuat kode ini berbeda dari yang sebelumnya. Mari kita lihat apa pernyataan ini.

Pernyataan 1:Pernyataan Tugas.

ddl_qry :='BUAT TABEL tut_83 ('|| 'tut_num NUMBER (5),'|| 'tut_name VARCHAR2 (50),'|| 'CONSTRAINT cons1_col1_pk PRIMARY KEY (tut_num)'|| ')'; 

Ini adalah satu-satunya pernyataan yang membuat program PL/SQL ini berbeda dari yang kita lihat di tutorial sebelumnya.

Dalam pernyataan ini kami menetapkan DDL CREATE TABLE ke variabel ddl_qry. Jadi apa bedanya di sini?

Dalam metode sebelumnya kami menyertakan seluruh pernyataan DDL kami menjadi sepasang Kutipan Tunggal ( ' ' ). Seperti ini

ddl_qry:='BUAT TABEL tut_82 ( tut_num NUMBER(3), tut_name VARCHAR2 (50) )';

Cara pertama menulis kueri DDL

Sedangkan di sini di metode kedua alih-alih membungkus seluruh kueri menjadi tanda kutip tunggal, pertama-tama kami membaginya menjadi beberapa string VARCHAR2. Ini kami lakukan dengan membungkus setiap baris kueri menjadi tanda kutip tunggal. Setelah itu kita gabungkan semuanya menggunakan operator concatenate ( || ) sehingga mesin PL/SQL akan mengeksekusi mereka sebagai satu kesatuan.

Anda dapat menonton demonstrasi mendetail dari pendekatan break and taklukkan ini untuk eksekusi dinamis dalam tutorial video.

Bacaan yang disarankan:Fungsi Concat Vs Operator Concat.

Pernyataan 2:Jalankan Pernyataan Segera.

Pernyataan kedua kami adalah pernyataan Execute Immediate. Itu mengeksekusi pernyataan SQL apa pun yang mengembalikan satu baris hasil secara dinamis. Dalam kasus kami, pernyataan ini mengeksekusi kueri DDL CREATE TABLE melalui blok PL/SQL.

Hanya ada dua cara untuk mengeksekusi pernyataan DDL melalui blok PL/SQL di Oracle Database. Baik dengan menggunakan paket DBMS_SQL atau Execute Immediate of Native Dynamic SQL. Baca di sini untuk mengetahui apa lagi yang dapat Anda lakukan menggunakan Execute Immediate.

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.

Periksa apakah tabel sudah dibuat atau belum.

Ada beberapa cara untuk memeriksa apakah blok PL/SQL berhasil mengeksekusi CREATE TABLE DDL atau tidak. Tapi di sini saya akan menunjukkan dua cara termudah dan populer.

Menggunakan Perintah DESCRIBE

Cara termudah untuk memeriksa apakah blok PL/SQL telah berhasil membuat tabel tut_83 atau tidak, adalah dengan menggunakan Perintah DESCRIBE. Perintah Mendeskripsikan menunjukkan struktur tabel yang disebutkan, hanya jika ada jika tidak maka akan mengembalikan kesalahan.

Mari kita coba itu

DESCRIBE tut_83;Atau DESC tut_83

Jika pada eksekusi perintah uraikan di atas Anda melihat struktur tabel tut_83 maka itu berarti blok PL/SQL di atas telah berhasil membuat tabel. Tetapi jika Anda mendapatkan kesalahan itu berarti Anda mengacaukan suatu tempat dan eksekusi blok PL/SQL tidak berhasil.

Menggunakan kamus data ALL_OBJECTS.

Anda juga dapat menanyakan kamus data ALL_OBJECTS. Ini membantu untuk mengetahui apakah tabel yang diinginkan atau objek lain yang Anda coba buat dibuat atau tidak. Seperti ini

SELECT 'Kami membuat tabel dengan nama '||object_name||' di ' ||pemilik ||' skema pada '||createdFROM all_objects WHERE object_name ='TUT_83';

Ini adalah dua di antara banyak cara untuk mengetahui apakah objek yang diinginkan berhasil dibuat.

Satu hal lagi sebelum mengakhiri tutorial ini. Silakan baca blog sebelumnya untuk pemahaman yang lebih baik tentang ini serta tutorial yang akan datang.

Itulah tutorial PL/SQL tentang cara kedua penulisan CREATE TABLE DDL for Execute Immediate statement Native Dynamic SQL di Oracle Database.

Semoga Anda menikmati membaca. Pastikan untuk berlangganan saluran YouTube. Karena pada tutorial selanjutnya kita akan mempelajari cara menjatuhkan dan memodifikasi objek skema secara dinamis.

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. Mengatasi Bug Kolom Drop di Oracle 18c dan 19c

  2. Permintaan rekursif di Oracle

  3. Cara lebih cepat untuk Menyisipkan, melalui skrip, di Oracle?

  4. Bagaimana cara mengecilkan tablespace temp di Oracle?

  5. Apakah ada Cara untuk menggunakan Linq ke Oracle