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

kesalahan karakter tidak valid saat mengeksekusi langsung

Anda tidak memiliki string di sana (saya berasumsi str dinyatakan sebagai karakter dari beberapa deskripsi). Jika Anda ingin menyisipkan string, Anda memerlukan tanda kutip tambahan, jika tidak maka akan ditafsirkan sebagai kolom dalam contoh ini. Sesuatu seperti:

begin
   ...
exception
   when others then
     sqltext2 := 'insert into error_table_shree select '''||str||''' from dual';
     execute immediate sqltext2;
end;
commit;

Harap perhatikan bahwa saya telah menghapus titik koma dari akhir string Anda; ini tidak diperlukan (dan mungkin penyebab sebenarnya dari kesalahan Anda).

Perlu juga dicatat bahwa ini sedikit SQL- injeksi ... Anda harus menggunakan variabel pengikat daripada penggabungan; ini semua dijelaskan dalam dokumentasi :

begin
   ...
exception
   when others then
     execute immediate 'insert into error_table_shree select :1 from dual' 
                  using str;
end;
commit;

Namun, tidak perlu menggunakan SQL dinamis dalam konteks ini; Anda cukup memasukkan nilai variabel:

begin
   ...
exception
   when others then
     insert into error_table_shree values (str);
end;
commit;

Terakhir, saya sedikit khawatir tentang COMMIT Anda; tidak biasa untuk melakukan setelah menangani kesalahan dengan cara ini. Tanpa lebih banyak konteks, tidak mungkin untuk memastikan tetapi akan lebih normal jika pencatatan kesalahan dilakukan di transaksi otonom



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tampilkan Semua Instance yang Harus Didaftarkan Secara Dinamis Dengan Pendengar

  2. Kebijakan Patch

  3. java.lang.ArrayIndexOutOfBoundsException:untuk koneksi jdbc

  4. Karakter khusus Oracle

  5. Oracle:Ekspor hasil pernyataan pilih yang ditetapkan sebagai INSERT SQL Statements yang mirip dengan ekspor pengembang SQL