sql >> Database teknologi >  >> RDS >> Oracle

Opret bruger fra strengvariabler i en PL/SQL-blok

PLS-00103:Stødte på symbolet "CREATE", da man forventede et af følgende:

Ovenstående fejl skyldes det faktum, at du bruger DDL inde i PL/SQL . Det kan du ikke gøre. Du skal (ab)bruge UDFØR STRAKS at udstede DDL-erklæringer i PL/SQL .

For eksempel

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"

Hurtig reference fra dokumentation ,

Udførelse af DDL- og SCL-sætninger i PL/SQL

Kun dynamisk SQL kan udføre følgende typer sætninger i PL/SQL-programenheder:

  • Datadefinitionssprog (DDL) sætninger såsom CREATE , DROP , GRANT , og REVOKE

  • Sessionskontrolsprog (SCL)-sætninger såsom ALTER SESSION og SET ROLE

  • TABLE klausul i SELECT erklæring

Til en sidebemærkning,

Oprettelse af brugere og tildeling af privilegier er normalt databaseadministration opgaver varetages af DBA. Det er ikke en hyppig aktivitet, der udføres via PL/SQL program. DBA opretter brugerne og giver de nødvendige privilegier som en engangsaktivitet.




  1. SQL Server:brug parameter i CREATE DATABASE

  2. Hvorfor bruge et READ UNCOMMITTED isolationsniveau?

  3. Sådan kombinerer du resultaterne af to forespørgsler i SQL

  4. Oracle VÆLG TOP 10 poster