PLS-00103:Encontrou o símbolo "CREATE" ao esperar um dos seguintes:
O erro acima é devido ao fato de você estar usando DDL dentro de PL/SQL . Você não pode fazer isso. Você deve (ab)usar EXECUTAR IMEDIATAMENTE para emitir declarações DDL em PL/SQL .
Por exemplo,
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"
Referência rápida da documentação ,
Executando instruções DDL e SCL em PL/SQL
Somente SQL dinâmico pode executar os seguintes tipos de instruções dentro de unidades de programa PL/SQL:
Linguagem de definição de dados (DDL) instruções comoCREATE
,DROP
,GRANT
, eREVOKE
Linguagem de controle de sessão (SCL) instruções comoALTER SESSION
eSET ROLE
- A
TABLE
cláusula noSELECT
declaração
Em uma nota lateral,
A criação de usuários e a concessão de privilégios geralmente são administração de banco de dados tarefas cuidadas pelo DBA. Não é uma atividade frequente feita via PL/SQL programa. O DBA cria os usuários e concede os privilégios necessários como uma atividade única.