sql >> Databasteknik >  >> RDS >> Oracle

ogiltigt teckenfel vid körning omedelbart

Du har ingen sträng där (jag antar str deklareras som en karaktär av någon beskrivning). Om du vill infoga en sträng behöver du extra citattecken annars kommer den att tolkas som en kolumn i det här fallet. Något i stil med:

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

Observera att jag har tagit bort semikolonet från slutet av din sträng; detta krävs inte (och är förmodligen den faktiska orsaken till ditt fel).

Det är också värt att notera att detta är lite SQL- injektion ... du bör använda bindningsvariabler snarare än sammanlänkning; allt detta beskrivs i dokumentationen :

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

Det finns dock inget behov av att använda dynamisk SQL i detta sammanhang; du kan helt enkelt infoga variabelvärdet:

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

Slutligen är jag lite orolig över din COMMIT; det är ovanligt att begå efter att ha hanterat ett fel på detta sätt. Utan mer sammanhang är det omöjligt att vara säker men det skulle vara mer normalt att felloggning utförs på en autonom transaktion



  1. Hur lagrar jag twitter oauth-detaljer i mysql-databasen?

  2. inte skiftlägeskänslig fråga i mysql

  3. MYSQL kombinerar vy av två tabeller med olika antal inmatningsposter

  4. Söker efter telefonnummer i mysql