Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Buat pengguna dari variabel string di blok PL/SQL

PLS-00103:Menemukan simbol "BUAT" saat mengharapkan salah satu dari yang berikut:

Kesalahan di atas adalah karena Anda menggunakan DDL di dalam PL/SQL . Kamu tidak bisa melakukan itu. Anda harus (ab) menggunakan EKSEKUSI SEGERA untuk mengeluarkan pernyataan DDL di PL/SQL .

Misalnya,

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"

Referensi cepat dari dokumentasi ,

Mengeksekusi Pernyataan DDL dan SCL di PL/SQL

Hanya SQL dinamis dapat mengeksekusi jenis pernyataan berikut dalam unit program PL/SQL:

  • Bahasa definisi data (DDL) pernyataan seperti CREATE , DROP , GRANT , dan REVOKE

  • Bahasa kontrol sesi (SCL) pernyataan seperti ALTER SESSION dan SET ROLE

  • TABLE klausa dalam SELECT pernyataan

Sebagai catatan tambahan,

Membuat pengguna dan memberikan hak istimewa biasanya administrasi basis data tugas yang ditangani oleh DBA. Ini bukan aktivitas yang sering dilakukan melalui PL/SQL program. DBA membuat pengguna dan memberikan hak istimewa yang diperlukan sebagai aktivitas satu kali.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana mengatasi ORA-06512 di nomor baris

  2. PLS-00428:klausa INTO diharapkan dalam pernyataan SELECT ini

  3. SQLDeveloper tidak menampilkan tabel di bawah koneksi di mana dikatakan tabel

  4. Dapatkan hanya tanggal tanpa waktu di Oracle

  5. Mengapa saya sepertinya tidak bisa memaksa Oracle 11g untuk mengkonsumsi lebih banyak CPU untuk satu kueri SQL?