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

Oracle:Apa artinya 'eksekusi segera'?

Ini untuk menjalankan SQL dinamis asli .

Untuk DML, Anda akan menggunakannya saat menjalankan pernyataan yang tidak tersedia pada waktu kompilasi, mis. jika daftar kolom didasarkan pada pilihan dari pengguna.

Dalam kasus Anda, ini digunakan karena DDL tidak dapat dijalankan sebagai SQL statis dari dalam PL/SQL. Hanya permintaan tertentu, perintah DML, dan TCL yang valid . Hal lain harus diperlakukan sebagai dinamis.

Saya akan mengatakan jarang perlu menggunakan DDL dari blok PL/SQL. TRUNCATE mungkin masuk akal; jika Anda menemukan sesuatu yang membuat atau menjatuhkan objek dengan cepat, hal itu mungkin lebih menjadi perhatian karena dapat menyarankan model data yang kurang optimal.

EXECUTE IMMEDIATE sendiri tidak secara otomatis melakukan; tetapi jika Anda menjalankan DDL maka itu akan berperilaku sama seperti jika Anda menjalankannya di luar PL/SQL, jadi itu akan dilakukan dalam kasus Anda, ya.

Kebetulan, saya tidak yakin mengapa kode Anda menggunakan variabel perantara untuk menyimpan pernyataan; itu berguna jika Anda ingin menampilkan apa yang akan dijalankannya, tetapi sepertinya Anda tidak melakukannya. Apa yang Anda miliki dapat dilakukan sebagai:

EXECUTE IMMEDIATE 'TRUNCATE TABLE BD_BIDS_EXT_DET';

yaitu tanpa menggunakan V_SQL_1 sama sekali.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada alternatif yang baik untuk SQL*PLUS untuk Oracle?

  2. Permintaan Oracle SQL untuk mengurangi waktu dari stempel waktu

  3. Bisakah pemicu dikunci; bagaimana cara menentukannya?

  4. Oracle Gabung vs Pilih lalu Sisipkan atau Perbarui

  5. hapus catatan lama yang dikelompokkan berdasarkan tiga kolom dan pesan berdasarkan tanggal