Oracle
 sql >> база данни >  >> RDS >> Oracle

грешка при невалиден знак при незабавно изпълнение

Нямате низ там (предполагам, че str се декларира като символ на някакво описание). Ако искате да вмъкнете низ, имате нужда от допълнителни кавички, в противен случай той ще бъде интерпретиран като колона в този случай. Нещо като:

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

Моля, обърнете внимание, че премахнах точката и запетая от края на вашия низ; това не е задължително (и вероятно е действителната причина за вашата грешка).

Също така си струва да се отбележи, че това е малко SQL- инжектиране ... трябва да използвате свързващи променливи а не конкатенация; всичко това е описано в документацията :

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; необичайно е да се ангажирате след обработка на грешка по този начин. Без повече контекст е невъзможно да бъдем сигурни, но би било по-нормално регистрирането на грешки да се извършва в автономна транзакция



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как NULL стойностите влияят на производителността при търсене в база данни?

  2. Oracle SQL вмъкване в with With клауза

  3. Извличане на данни от дефиниран от потребителя тип чрез cx_Oracle

  4. Извличане на URL адреса на доставчика на текущия сървър по време на изпълнение на weblogic (неотхвърлен начин)

  5. прост синтаксис на оператор за избор на Oracle