PLS-00103:Auf das Symbol „CREATE“ gestoßen, wenn eines der folgenden erwartet wurde:
Der obige Fehler ist darauf zurückzuführen, dass Sie DDL verwenden innerhalb von PL/SQL . Das kannst du nicht tun. Sie müssen IMMEDIATE AUSFÜHREN (missbrauchen). um DDL-Anweisungen auszugeben in PL/SQL .
Zum Beispiel
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"
Kurzreferenz aus der Dokumentation ,
Ausführen von DDL- und SCL-Anweisungen in PL/SQL
Nur dynamisches SQL kann die folgenden Arten von Anweisungen innerhalb von PL/SQL-Programmeinheiten ausführen:
-
Datendefinitionssprache (DDL)-Anweisungen wie
CREATE,DROP,GRANT, undREVOKE -
Sitzungssteuerungssprache (SCL)-Anweisungen wie
ALTER SESSIONundSET ROLE - Die
TABLE-Klausel inSELECTErklärung
Nebenbei bemerkt
Das Erstellen von Benutzern und das Gewähren von Berechtigungen sind normalerweise Datenbankverwaltung Aufgaben, die vom DBA wahrgenommen werden. Dies ist keine häufige Aktivität, die über PL/SQL ausgeführt wird Programm. Der DBA erstellt die Benutzer und gewährt die erforderlichen Berechtigungen als einmalige Aktivität.