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

Jalankan SCRIPT dari PL/SQL Block

Ini 2012 2017. Skrip adalah hangover yang kikuk dan rapuh dari milenium terakhir. Oracle memiliki berbagai fungsionalitas yang fantastis yang dapat kita jalankan di PL/SQL, ditambah ada Java Stored Procedures, dan ada penjadwalan untuk memulai pekerjaan. Selain menjalankan DDL untuk membuat atau mengubah skema, hampir tidak ada kebutuhan untuk skrip di lingkungan database Oracle; bahkan skrip DDL harus dipicu dari klien eksternal, mungkin alat build seperti TeamCity.

Secara khusus saya akan menganggap mencoba menjalankan skrip SQL dari program PL/SQL sebagai kegagalan arsitektur. Apa yang Anda lakukan dengan skrip yang tidak dapat Anda lakukan dengan prosedur tersimpan?

Adapun untuk meneruskan input ke prosedur tersimpan, untuk itulah parameter digunakan. PL/SQL tidak interaktif, kami membutuhkan klien untuk memasukkan nilai. Bergantung pada skenarionya, ini dapat dilakukan secara asinkron (nilai dalam file atau tabel) atau secara sinkron (memanggil prosedur tersimpan dari SQL*Plus, SQL Developer, atau front end yang dipesan lebih dahulu).

Setelah mengatakan semua itu, di dunia nyata kami bekerja dengan arsitektur yang berantakan dengan saling ketergantungan antara database dan OS eksternal. Jadi apa yang bisa kita lakukan?

  1. Kita bisa menulis Java Stored Procedure untuk mengeksekusi perintah shell. Ini adalah solusi terhormat, yang telah ada sejak Oracle 8i. Cari tahu lebih lanjut.
  2. Dalam 10g Oracle ganti DBMS_JOB dengan DBMS_SCHEDULER. Salah satu peningkatan alat ini adalah kemampuannya untuk menjalankan pekerjaan eksternal yaitu skrip shell. Cari tahu lebih lanjut.
  3. Karena tabel eksternal Oracle 11g R1 mendukung skrip pra-prosesor, yang menjalankan perintah shell sebelum menanyakan tabel. Cari tahu lebih lanjut.

Perhatikan bahwa semua opsi ini menuntut akses yang lebih tinggi (hibah pada objek DIRECTORY, kredensial keamanan, dll). Ini hanya dapat diberikan oleh pengguna yang memiliki hak istimewa (yaitu DBA). Kecuali database kami memiliki konfigurasi keamanan yang sangat lemah, tidak ada cara bagi kami untuk menjalankan skrip shell arbitrer dari PL/SQL.

Akhirnya, tidak jelas manfaat apa yang Anda harapkan dari menjalankan skrip SQL di PL/SQL. Ingat bahwa PL/SQL berjalan di server database, jadi tidak dapat melihat skrip di mesin klien . Hal ini tampaknya relevan mengingat persyaratan untuk menerima masukan pengguna.

Mungkin solusi paling sederhana adalah konfigurasi ulang skrip asli. Pisahkan panggilan PL/SQL yang diperlukan menjadi satu blok, lalu panggil saja skrip bernama:

begin
   proc(para1,para2);
end;
/   
@prompt1.sql


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 Cara Menemukan Baris yang Mengandung Huruf Besar di Oracle

  2. Menerapkan Penguncian Optimis di Oracle

  3. Bagaimana Mengubah Nilai Negatif menjadi Positif di Oracle?

  4. Cara membuat tautan DB antara dua instance Oracle

  5. ORA-28001:Kata sandi telah kedaluwarsa