PLS-00103:Срещнахте символа „CREATE“, когато се очакваше едно от следните:
Горната грешка се дължи на факта, че използвате DDL вътре в PL/SQL . Не можеш да го направиш. Трябва (зло) да използвате ИЗПЪЛНЯВАНЕ НЕЗАБАВНО за издаване на DDL изявления в PL/SQL .
Например,
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"
Бърза справка от документацията ,
Изпълнение на DDL и SCL оператори в PL/SQL
Само динамичен SQL може да изпълнява следните типове оператори в рамките на PL/SQL програмни единици:
Език за дефиниране на данни (DDL) изрази като
CREATE
,DROP
,GRANT
иREVOKE
Език за контрол на сесиите (SCL) изрази като
ALTER SESSION
иSET ROLE
TABLE
клауза вSELECT
изявление
Като странична бележка,
Създаването на потребители и предоставянето на привилегии обикновено са администриране на база данни задачи, поети от DBA. Това не е честа дейност, извършвана чрез PL/SQL програма. DBA създава потребителите и предоставя необходимите привилегии като еднократна дейност.