PLS-00103 :Le symbole "CREATE" s'affiche lorsque l'un des éléments suivants est attendu :
L'erreur ci-dessus est due au fait que vous utilisez DDL dans PL/SQL . Vous ne pouvez pas le faire. Vous devez (ab)utiliser EXÉCUTER IMMÉDIATEMENT pour émettre des instructions DDL en PL/SQL .
Par exemple,
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"
Référence rapide de la documentation ,
Exécuter des instructions DDL et SCL en PL/SQL
Uniquement SQL dynamique peut exécuter les types d'instructions suivants dans les unités de programme PL/SQL :
Langage de définition des données (DDL) telles que
CREATE
,DROP
,GRANT
, etREVOKE
Langue de contrôle de session (SCL) telles que
ALTER SESSION
etSET ROLE
- La
TABLE
clause dans leSELECT
déclaration
En passant,
La création d'utilisateurs et l'octroi de privilèges relèvent généralement de l'administration de la base de données tâches prises en charge par le DBA. Ce n'est pas une activité fréquente effectuée via PL/SQL programme. L'administrateur de base de données crée les utilisateurs et accorde les privilèges nécessaires en une seule fois.