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/example@sqldat.com
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,GRANTochREVOKESessionskontrollspråk (SCL)-satser som
ALTER SESSIONochSET ROLETABLEsats iSELECTuttalande
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.