sql >> Databáze >  >> RDS >> Oracle

Vytvořte uživatele z řetězcových proměnných v bloku PL/SQL

PLS-00103:Setkal se se symbolem „VYTVOŘIT“, když očekával jednu z následujících situací:

Výše uvedená chyba je způsobena tím, že používáte DDL uvnitř PL/SQL . To nemůžeš udělat. Musíte (ab)použít PROVEĎ OKAMŽITĚ k vydávání výkazů DDL v PL/SQL .

Například,

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"

Rychlý odkaz z dokumentace ,

Provádění příkazů DDL a SCL v PL/SQL

Pouze dynamické SQL může provádět následující typy příkazů v rámci programových jednotek PL/SQL:

  • Jazyk definice dat (DDL) příkazy jako CREATE , DROP , GRANT a REVOKE

  • Jazyk ovládání relace příkazy (SCL), jako je ALTER SESSION a SET ROLE

  • TABLE klauzule v SELECT prohlášení

Na okraj,

Vytváření uživatelů a udělování oprávnění je obvykle správa databáze úkoly, o které se stará DBA. Není to častá aktivita prováděná přes PL/SQL program. DBA vytváří uživatele a uděluje potřebná oprávnění jako jednorázovou aktivitu.




  1. java.lang.IllegalArgumentException:sloupec '_id' neexistuje

  2. Porovnejte pouze den a měsíc s datem v mysql

  3. Chyba připojení Postgres byla uzavřena v aplikaci Spring Boot

  4. Jak objednávat podle data v T-SQL