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/example@sqldat.com
Connected.
SQL> SHOW USER
USER is "FOO"
Бърза справка от документацията ,
Изпълнение на DDL и SCL оператори в PL/SQL
Само динамичен SQL може да изпълнява следните типове оператори в рамките на PL/SQL програмни единици:
Език за дефиниране на данни (DDL) изрази като
CREATE,DROP,GRANTиREVOKEЕзик за контрол на сесиите (SCL) изрази като
ALTER SESSIONиSET ROLETABLEклауза вSELECTизявление
Като странична бележка,
Създаването на потребители и предоставянето на привилегии обикновено са администриране на база данни задачи, поети от DBA. Това не е честа дейност, извършвана чрез PL/SQL програма. DBA създава потребителите и предоставя необходимите привилегии като еднократна дейност.