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