PLS-00103:è stato riscontrato il simbolo "CREA" quando si aspettava uno dei seguenti:
L'errore precedente è dovuto al fatto che stai utilizzando DDL all'interno di PL/SQL . Non puoi farlo. Devi (ab)usare ESEGUI IMMEDIATO per emettere dichiarazioni DDL in PL/SQL .
Ad esempio,
SQL> DECLARE
2 my_user VARCHAR2(30) := 'foo';
3 my_password VARCHAR2(9) := '1234';
4 BEGIN
5 EXECUTE IMMEDIATE 'CREATE USER '||my_user||' IDENTIFIED BY '||my_password;
6 EXECUTE IMMEDIATE 'GRANT CREATE SESSION TO '||my_user;
7 END;
8 /
PL/SQL procedure successfully completed.
SQL> conn foo/[email protected]
Connected.
SQL> SHOW USER
USER is "FOO"
Riferimento rapido da documentazione ,
Esecuzione di istruzioni DDL e SCL in PL/SQL
Solo SQL dinamico può eseguire i seguenti tipi di istruzioni all'interno di unità di programma PL/SQL:
-
Lingua di definizione dei dati (DDL) istruzioni come
CREATE
,DROP
,GRANT
eREVOKE
-
Lingua di controllo della sessione (SCL) istruzioni come
ALTER SESSION
eSET ROLE
- Il
TABLE
clausola nelSELECT
dichiarazione
In una nota a margine,
La creazione di utenti e la concessione di privilegi sono solitamente amministrazione del database compiti curati dal DBA. Non è un'attività frequente svolta tramite PL/SQL programma. DBA crea gli utenti e concede i privilegi necessari come attività una tantum.