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

DBMS_PARALLEL_EXECUTE i pośrednio przyznane dotacje na procedurę

Role nie są domyślnie aktywowane w przechowywanych jednostkach PL/SQL (testowane z Oracle 19, ale jest tak samo zachowanie w starszych wydaniach od bardzo dawna) :

SQL> set serveroutput on
SQL> select banner from v$version where rownum=1;

BANNER
--------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

SQL> show user;
USER is "USR2"
SQL> select * from session_roles;

ROLE
--------------------------------------------------------------------------------
CONNECT
SELECT_CATALOG_ROLE
HS_ADMIN_SELECT_ROLE
STUFF_DOER

SQL> --
SQL> begin
  2  for r in (select role from session_roles)
  3  loop
  4   dbms_output.put_line('role=' || r.role);
  5  end loop;
  6  end;
  7  /
role=CONNECT
role=SELECT_CATALOG_ROLE
role=HS_ADMIN_SELECT_ROLE
role=STUFF_DOER

PL/SQL procedure successfully completed.

SQL> show errors
No errors.
SQL> create or replace procedure sr is
  2  begin
  3  for r in (select role from session_roles)
  4  loop
  5   dbms_output.put_line('role=' || r.role);
  6  end loop;
  7  end;
  8  /

Procedure created.

SQL> show errors
No errors.
SQL> 
SQL> exec sr;

PL/SQL procedure successfully completed.

SQL> 

Zwróć uwagę na różnicę między anonimowym PL/SQL (który nie jest przechowywany w bazie danych) a przechowywaną jednostką (procedura/funkcja przechowywana w bazie danych).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle.ManagedDataAccess z bazą danych Oracle 8.1.7

  2. Twórz na lokalnej instancji Oracle

  3. Jak zliczyć(*) wiele tabel, rozmiar i przestrzeń tabel w jednym zapytaniu?

  4. Funkcja ASCII() w Oracle

  5. Utwórz wiodące zero w Oracle