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. Msql:時間の経過に伴う成長のカウント

    2. SQL ALTER TABLE

    3. jsonb配列を使用したRails(postgres)クエリ

    4. 角度ループが更新されていません