Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Utwórz użytkownika ze zmiennych łańcuchowych w bloku PL/SQL

PLS-00103:Napotkałem symbol „UTWÓRZ”, gdy oczekiwano jednego z następujących:

Powyższy błąd wynika z faktu, że używasz DDL wewnątrz PL/SQL . Nie możesz tego zrobić. Musisz (nad)użyć WYKONAJ NATYCHMIAST wystawiać wyciągi DDL w PL/SQL .

Na przykład

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"

Szybkie odniesienie z dokumentacji ,

Wykonywanie instrukcji DDL i SCL w PL/SQL

Tylko dynamiczny SQL może wykonywać następujące typy instrukcji w jednostkach programu PL/SQL:

  • Język definicji danych (DDL) instrukcje, takie jak CREATE , DROP , GRANT i REVOKE

  • Język kontroli sesji (SCL) instrukcje, takie jak ALTER SESSION i SET ROLE

  • TABLE klauzula w SELECT oświadczenie

Na marginesie,

Tworzenie użytkowników i nadawanie uprawnień to zwykle administracja bazą danych zadania realizowane przez DBA. Nie jest to częsta czynność wykonywana przez PL/SQL program. DBA tworzy użytkowników i nadaje niezbędne uprawnienia jako jednorazową czynność.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieistotna różnica planu wykonania z Oracle przy użyciu jdbc Timestamp lub Date

  2. ORA-01264:Nie można utworzyć nazwy pliku dziennika

  3. Jak zaszyfrować hasło w Oracle?

  4. Jaki jest idealny zestaw narzędzi do programowania w PL/SQL?

  5. Korzystanie z Oracle JDeveloper 12c z Oracle Database 12c na Oracle Cloud Platform, część 2