PLS-00103:Stødte på symbolet "CREATE", da man forventede et af følgende:
Ovenstående fejl skyldes det faktum, at du bruger DDL inde i PL/SQL . Det kan du ikke gøre. Du skal (ab)bruge UDFØR STRAKS at udstede DDL-erklæringer i PL/SQL .
For eksempel
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"
Hurtig reference fra dokumentation ,
Udførelse af DDL- og SCL-sætninger i PL/SQL
Kun dynamisk SQL kan udføre følgende typer sætninger i PL/SQL-programenheder:
-
Datadefinitionssprog (DDL) sætninger såsom
CREATE
,DROP
,GRANT
, ogREVOKE
-
Sessionskontrolsprog (SCL)-sætninger såsom
ALTER SESSION
ogSET ROLE
TABLE
klausul iSELECT
erklæring
Til en sidebemærkning,
Oprettelse af brugere og tildeling af privilegier er normalt databaseadministration opgaver varetages af DBA. Det er ikke en hyppig aktivitet, der udføres via PL/SQL program. DBA opretter brugerne og giver de nødvendige privilegier som en engangsaktivitet.