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/[email protected]
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 SESSION
undSET ROLE
- Die
TABLE
-Klausel inSELECT
Erklä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.