sql >> Database >  >> RDS >> Oracle

DBMS_PARALLEL_EXECUTE en indirect toegekende subsidies op procedure

Rollen worden standaard niet geactiveerd in PL/SQL-opslageenheden (getest met Oracle 19 maar het is hetzelfde gedrag in oudere releases sinds zeer lange tijd) :

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> 

Let op het verschil tussen anonieme PL/SQL (die niet in de database is opgeslagen) en een opgeslagen eenheid (procedure/functie opgeslagen in de database).



  1. PHP Mysql voegt zich bij alle databases

  2. Wat zijn de voordelen van VistaDB

  3. ORACLE 12.2.01 selecteren van kolommen uit verschillende tabellen met vergelijkbare namen --> interne kolom-ID gebruikt

  4. Trek maanden af ​​van de huidige datum sql