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

Cara Menggunakan Execute Immediate Dengan INTO Clause Di Oracle Database

Jalankan Segera Dengan Klausa INTO

SQL atau NDS dinamis asli membantu pengembang dengan memberikan fleksibilitas, meningkatkan kinerja, dan menyederhanakan sintaks pemrograman. Hari ini dalam tutorial ini kita akan belajar bagaimana menulis query SQL Dinamis di Oracle Database menggunakan Execute Immediate Statement.

Jadi apa itu Execute Immediate Statement di Oracle Database?

Menggunakan Execute Immediate, kita dapat mengurai dan mengeksekusi pernyataan SQL atau blok PL/SQL secara dinamis di Oracle Database. Dan secara dinamis yang saya maksud saat runtime.

Eksekusi segera hanya membutuhkan satu argumen. Itu bisa berupa pernyataan SQL atau blok PL/SQL. Compiler memperlakukan argumen dari pernyataan Execute Immediate sebagai string dari tipe data VARCHAR2. Oleh karena itu, pastikan untuk menyertakan kueri SQL atau blok PL/SQL Anda ke dalam pasangan tanda kutip tunggal ( ' ' ).

Dapatkah kita menggunakan pernyataan SQL apa pun dengan Execute Immediate?

Pernyataan SQL atau blok PL/SQL apa pun yang mengembalikan satu baris hasil dapat digunakan dengan Execute Immediate. Selanjutnya jika pernyataan Anda mengembalikan lebih dari satu baris hasil maka ada cara lain. Selain itu, ini akan kita bahas di tutorial mendatang.

Apa sintaks dari Execute Immediate Statement?

Sintaks pernyataan Execute Immediate cukup sederhana. Mari kita lihat.

EXECUTE IMMEDIATE dynamic_query
[INTO user_defined_variable-1, user_defined_variable-2…]
[USING bind_argument-1, bind_argument-2…]
[RETURNING|RETURN-INTO clause];  

Dimana:

Eksekusi Segera :Execute Immediate adalah frasa khusus.

Kueri_dinamis :Diikuti dengan frase khusus kita harus menulis query dinamis kita. Kueri ini bisa berupa pernyataan SQL atau blok PL/SQL. Selain itu kompiler memperlakukan kueri dinamis sebagai string tipe data VARCHAR2. Oleh karena itu, Anda harus memastikan bahwa Anda menyertakan kueri ke dalam sepasang tanda kutip tunggal.

Ke dalam klausa :Menggunakan klausa INTO, kami menentukan daftar variabel yang ditentukan pengguna. Selain itu, ini akan menyimpan nilai yang dikembalikan oleh pernyataan SELECT dinamis. Ini sangat mirip dengan pernyataan SELECT-INTO. Ini juga merupakan klausa opsional, jadi jika Anda tidak memerlukannya, Anda dapat menghilangkannya.

klausa MENGGUNAKAN :Jika Anda telah menggunakan variabel ikat dalam kueri dinamis, klausa ini akan memungkinkan Anda menentukan nilai untuk variabel ikat tersebut. Ini pada gilirannya akan diganti sesuai selama runtime. Sekali lagi, ini adalah klausa Opsional.

KEMBALI atau KEMBALI KE klausa:Kembali ke klausa berlawanan dengan klausa MENGGUNAKAN. Sedangkan dalam menggunakan klausa kami memberikan nilai ke kueri dinamis di sini di klausa RETURNING INTO kami mendapatkan nilai yang dikembalikan oleh kueri dinamis. Dan simpan ke dalam daftar argumen pengikatan yang ditentukan. Sekali lagi ini adalah Klausa Opsional.

Anda juga dapat melihat penjelasan mendetail tentang sintaks di atas dalam video terkait di sini.

Contoh pernyataan Execute Immediate.

Melakukan demonstrasi eksekusi langsung menggunakan semua klausa yang disebutkan di atas akan meningkatkan kompleksitas dan membuat contoh sulit untuk dipahami. Yang justru kebalikan dari apa yang kita inginkan.

Jadi untuk menjaga konsep tetap sederhana dan mudah dipelajari kita akan melakukan contoh Execute Immediate menggunakan klausa pertama yaitu INTO.

Eksekusi Segera dengan klausa INTO.

SET SERVEROUTPUT ON;
DECLARE
    sql_qry     VARCHAR2 (150);
    emp_tot     NUMBER(3);
BEGIN
    
    sql_qry:= ‘SELECT count (*) FROM employees';
    EXECUTE IMMEDIATE sql_qry INTO emp_tot;
    DBMS_OUTPUT.PUT_LINE ('Total employees are: '||emp_tot);

END;
/

Berikut adalah contoh yang sangat sederhana yang menunjukkan cara menggunakan eksekusi langsung dengan INTO klausa dalam Oracle Database. Mari kita lihat apa yang kita lakukan di sini.

Bagian Deklarasi

Pada bagian deklarasi kita telah mendeklarasikan dua variabel. Variabel pertama adalah sql_qry tipe VARCHAR 2. Kami akan menggunakan variabel ini untuk menyimpan pernyataan SELECT yang ingin kami jalankan dengan pernyataan EXECUTE IMMEDIATE kami. Karena variabel ini akan menampung pernyataan DML, maka kita harus memastikan bahwa variabel ini memiliki lebar data yang cukup.

Yang kedua adalah variabel yang ditentukan pengguna emp_tot. Kami akan menggunakan variabel ini dengan klausa INTO untuk menyimpan data yang dikembalikan oleh pernyataan SELECT kami.

Bagian Eksekusi

Pada bagian ini kita hanya memiliki tiga pernyataan. Ini adalah:

Pernyataan 1 :

Dalam pernyataan pertama kami menetapkan kueri SQL yang valid ke variabel sql_qry.

Pernyataan 2

Pernyataan kedua adalah pernyataan EXECUTE IMMEDIATE – INTO. Dalam pernyataan ini segera setelah menulis frasa yang dipesan, eksekusi segera, kami menulis nama variabel sql_qry. Variabel yang sama tempat kita menyimpan pernyataan SELECT.

Saat dieksekusi, mesin runtime akan mengganti variabel ini dengan konten yang dipegangnya, yang dalam kasus kami adalah pernyataan SELECT. Jika tidak ada kesalahan maka mesin runtime akan mengeksekusi pernyataan SELECT yang mendasarinya. Setelah itu kembalikan hasilnya jika ada.

Sementara pernyataan SELECT kami akan mengembalikan nilai yang merupakan jumlah total baris tabel karyawan. Menggunakan klausa INTO dari pernyataan EXECUTE IMMEDIATE, kami akan menyimpan nilai yang dikembalikan itu ke dalam variabel emp_tot.

Pernyataan 3 :

Pernyataan ketiga adalah pernyataan keluaran yang digunakan untuk menampilkan nilai variabel emp_tot kembali ke pengguna.

Info:
Dalam kasus transaksi DML, komitmen eksplisit diperlukan karena Execute Immediate tidak akan secara otomatis melakukan transaksi DML.

Cara alternatif untuk menulis bagian eksekusi ini adalah:

BEGIN
    EXECUTE IMMEDIATE 'SELECT count (*) FROM employees' INTO emp_tot;
    DBMS_OUTPUT.PUT_LINE ('Total employees are: '||emp_tot); 
END;
/

Jika mau, Anda dapat melewatkan pernyataan pertama sepenuhnya. Cukup tulis kueri SQL langsung setelah frasa yang dicadangkan EXECUTE IMMEDIATE.

Silakan tonton video di saluran YouTube saya untuk mempelajari cara menulis kueri yang tepat untuk Execute Immediate.

Bagaimana Menurut Kalian?

Secara pribadi saya suka cara sebelumnya di mana kami menggunakan variabel untuk menyimpan kueri. Dan kemudian menggunakan variabel itu dengan Execute Immediate. Karena itu membuat kode kita terlihat rapi dan bersih. Selain itu, ini membantu kami melacak kueri kami untuk berjaga-jaga jika kami ingin mengubah atau memodifikasinya.

apa yang kalian pikirkan? Cara penulisan Execute Immediate mana yang paling Anda sukai? Yang pertama atau yang terakhir. Ceritakan pendapat Anda di halaman Facebook saya atau di Twitter saya.

Jika Anda merasa belajar melalui menonton video jauh lebih nyaman maka Anda dapat menonton video di saluran YouTube saya. Dan pelajari tentang Execute Immediate dengan klausa INTO.

Sejauh ini dalam tutorial ini kita telah mempelajari apa itu Execute Immediate Statement dan bagaimana menggunakannya untuk mengeksekusi query SQL secara dinamis menggunakan klausa INTO di Oracle Database. Saya rasa cukup sekian tutorial kali ini. Mari kita tetap sederhana dengan tidak memperpanjangnya.

Pastikan untuk Berlangganan ke saluran YouTube saya untuk tutorial menarik lainnya.

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. Arsitektur Oracle E-Business Suite dalam 12.2

  2. Memetakan kunci asing dengan nama kolom khusus

  3. Fungsi MySQL COALESCE dan NULLIF

  4. Apa Presisi dan Skala default untuk Angka di Oracle?

  5. Menggunakan 'kolom ekspresi kasus' di mana klausa