そこに文字列がありません(str
だと思います) いくつかの説明の文字として宣言されています)。文字列を挿入する場合は、追加の引用符が必要です。そうでない場合、このインスタンスでは列として解釈されます。次のようなもの:
begin
...
exception
when others then
sqltext2 := 'insert into error_table_shree select '''||str||''' from dual';
execute immediate sqltext2;
end;
commit;
文字列の末尾からセミコロンを削除したことに注意してください。これは必須ではありません(おそらくエラーの実際の原因です)。
これは少し
begin
...
exception
when others then
execute immediate 'insert into error_table_shree select :1 from dual'
using str;
end;
commit;
ただし、このコンテキストで動的SQLを使用する必要はありません。変数値を挿入するだけです:
begin
...
exception
when others then
insert into error_table_shree values (str);
end;
commit;
最後に、私はあなたのCOMMIT
について少し心配しています;この方法でエラーを処理した後にコミットするのは珍しいことです。より多くのコンテキストがなければ、確実にすることは不可能ですが、エラーログが自律トランザクション