PLS-00103:Kwam het symbool "CREATE" tegen toen ik een van de volgende verwachtte:
De bovenstaande fout is vanwege het feit dat u DDL . gebruikt binnen PL/SQL . Dat kun je niet doen. U moet IMMEDIATE UITVOEREN . (misbruiken) gebruiken om DDL-verklaringen uit te geven in PL/SQL .
Bijvoorbeeld,
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"
Snelle referentie uit documentatie ,
DDL- en SCL-statements uitvoeren in PL/SQL
Alleen dynamische SQL kan de volgende soorten opdrachten uitvoeren binnen PL/SQL-programma-eenheden:
Taal voor gegevensdefinitie (DDL)-instructies zoals
CREATE
,DROP
,GRANT
, enREVOKE
Taal voor sessiecontrole (SCL)-instructies zoals
ALTER SESSION
enSET ROLE
- De
TABLE
clausule in deSELECT
verklaring
Even terzijde,
Het aanmaken van gebruikers en het verlenen van privileges is meestal databasebeheer taken uitgevoerd door de DBA. Het is geen frequente activiteit die wordt gedaan via PL/SQL programma. DBA maakt de gebruikers aan en verleent de benodigde rechten als een eenmalige activiteit.