Problemet er ;
tegn i 'SELECT * FROM DUAL;'
.
Fra 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 ] ;
... hvor dynamic_string
er (min fremhævelse):
Da det ikke accepterer flere udsagn, medmindre du omslutter dem i en enkelt PL/SQL-blok, vil ;
separator forventes ikke.
Der er en bedre forklaring på Brug af EXECUTE IMMEDIATE-erklæringen i PL/SQL :