PLS-00103:Encontró el símbolo "CREATE" cuando esperaba uno de los siguientes:
El error anterior se debe al hecho de que está utilizando DDL dentro de PL/SQL . Usted no puede hacer eso. Debes (ab)usar EJECUTAR INMEDIATO para emitir declaraciones DDL en PL/SQL .
Por ejemplo,
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"
Referencia rápida de documentación ,
Ejecución de sentencias DDL y SCL en PL/SQL
Solo SQL dinámico puede ejecutar los siguientes tipos de declaraciones dentro de unidades de programa PL/SQL:
-
Lenguaje de definición de datos (DDL) declaraciones como
CREATE
,DROP
,GRANT
yREVOKE
-
Idioma de control de sesión (SCL) instrucciones como
ALTER SESSION
ySET ROLE
- La
TABLE
cláusula en elSELECT
declaración
En una nota al margen,
La creación de usuarios y la concesión de privilegios suelen ser administración de bases de datos tareas a cargo del DBA. No es una actividad frecuente realizada a través de PL/SQL programa. DBA crea los usuarios y otorga los privilegios necesarios como una actividad única.