PLS-00103:Påträffade symbolen "CREATE" när något av följande förväntades:
Ovanstående fel beror på att du använder DDL inuti PL/SQL . Du kan inte göra det. Du måste (ab)använda EXECUTE OMEDELBART för att utfärda DDL-utlåtanden i PL/SQL .
Till exempel,
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"
Snabbreferens från dokumentationen ,
Köra DDL- och SCL-satser i PL/SQL
Endast dynamisk SQL kan köra följande typer av satser inom PL/SQL-programenheter:
Datadefinitionsspråk (DDL)-satser som
CREATE
,DROP
,GRANT
ochREVOKE
Sessionskontrollspråk (SCL)-satser som
ALTER SESSION
ochSET ROLE
TABLE
sats iSELECT
uttalande
Som en sidoanteckning,
Att skapa användare och bevilja privilegier är vanligtvis databasadministration uppgifter som sköts av DBA. Det är inte en frekvent aktivitet som görs via PL/SQL program. DBA skapar användarna och beviljar nödvändiga privilegier som en engångsaktivitet.