PLS-00103:Napotkałem symbol „UTWÓRZ”, gdy oczekiwano jednego z następujących:
Powyższy błąd wynika z faktu, że używasz DDL wewnątrz PL/SQL . Nie możesz tego zrobić. Musisz (nad)użyć WYKONAJ NATYCHMIAST wystawiać wyciągi DDL w PL/SQL .
Na przykład
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"
Szybkie odniesienie z dokumentacji ,
Wykonywanie instrukcji DDL i SCL w PL/SQL
Tylko dynamiczny SQL może wykonywać następujące typy instrukcji w jednostkach programu PL/SQL:
-
Język definicji danych (DDL) instrukcje, takie jak
CREATE
,DROP
,GRANT
iREVOKE
-
Język kontroli sesji (SCL) instrukcje, takie jak
ALTER SESSION
iSET ROLE
TABLE
klauzula wSELECT
oświadczenie
Na marginesie,
Tworzenie użytkowników i nadawanie uprawnień to zwykle administracja bazą danych zadania realizowane przez DBA. Nie jest to częsta czynność wykonywana przez PL/SQL program. DBA tworzy użytkowników i nadaje niezbędne uprawnienia jako jednorazową czynność.