Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Ausführen von `EXECUTE IMMEDIATE ` Oracle Statement Get Error

Das Problem ist der ; Zeichen in 'SELECT * FROM DUAL;' .

Aus der Dokumentation :

execute_immediate_statement ::=
EXECUTE_IMMEDIATE dynamic_string
 { 
    INTO { define_variable [, define_variable ...] | record_name } 
  | BULK COLLECT INTO { collection_name [, collection_name ...] | :host_array_name } 
 }
   [ USING [ IN | OUT | IN OUT ] bind_argument
   [, [ IN | OUT | IN OUT ] bind_argument] ... ] [ returning_clause ] ;

... wo dynamic_string ist (Hervorhebung von mir):

Da mehrere Anweisungen nicht akzeptiert werden, es sei denn, Sie schließen sie in einen einzigen PL/SQL-Block ein, den ; Trennzeichen wird nicht erwartet.

Es gibt eine bessere Erklärung unter Using the EXECUTE IMMEDIATE Statement in PL/SQL :