Oracle
 sql >> база данни >  >> RDS >> Oracle

DBMS_PARALLEL_EXECUTE и непряко дадени грантове на процедура

Ролите не се активират по подразбиране в PL/SQL съхранени единици (тествано с Oracle 19, но е същото поведение в по-стари версии от много дълго време) :

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> 

Обърнете внимание на разликата между анонимен PL/SQL (който не се съхранява в базата данни) и съхранена единица (процедура/функция, съхранена в базата данни).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проектирам таблица, която ще съхранява много големи данни?

  2. Каква е разликата между varchar и varchar2 в Oracle?

  3. Предайте и връщайте персонализиран обект на масив в ibatis и оракул в java

  4. Промяна на вмъкната стойност с тригер

  5. Нормализирайте данните за транзакциите от колони за време и състояние до минути за стойност на състоянието