Home Database Mysql Tutorial 一段Oracle EBS中给指定用户增加指定职责的PLSQL脚本

一段Oracle EBS中给指定用户增加指定职责的PLSQL脚本

Jun 07, 2016 pm 05:22 PM
plsql

在一些比较注重权限的EBS项目中, 普通用户通常没有System Administrator权限, 只能由DBA给一个一个用户一个一个职责加, 纯手工的

一段Oracle EBS中给指定用户增加指定职责的PLSQL脚本

[日期:2012-11-23] 来源:Linux社区  作者:t0nsha [字体:]

在一些比较注重权限的EBS项目中, 普通用户通常没有System Administrator权限, 只能由DBA给一个一个用户一个一个职责加, 纯手工的话很麻烦, 于是写了一段PLSQL脚本, 留着备用. 由于Oracle 10g尚不支持continue语句, 因此10g和11g分开写了.

1. Based on EBS R12.0.6/Oracle DB 10gR2

DECLARE 
  -- script to add user responsibility for R12.0/10gR2 
 
  TYPE tab_user_list IS TABLE OF VARCHAR2 (100); 
  TYPE arr_resp_list IS VARRAY (100) OF VARCHAR2 (100); 
 
  -- user to be changed 
  l_tab_user_list tab_user_list 
                    := tab_user_list ('LIAO' 
                                      ,'KARL' 
                                      ,'xx'); 
 
  -- responsibility to be added 
  l_arr_resp_list arr_resp_list 
                    := arr_resp_list ('system Administrator' 
                                      ,'Purchasing Super User' 
                                      ,'Application Administrator'); 
 
  CURSOR cur_user ( 
      pc_username IN VARCHAR2) 
  IS 
      SELECT fu.user_id 
            ,fu.user_name 
      FROM  fnd_user fu 
      WHERE  fu.user_name = pc_username 
            AND TRUNC (SYSDATE) BETWEEN TRUNC (NVL (fu.start_date, SYSDATE)) 
                                    AND TRUNC (NVL (fu.end_date, SYSDATE)); 
  TYPE tab_user IS TABLE OF cur_user%ROWTYPE; 
  l_tab_user    tab_user; 
 
  CURSOR cur_resp ( 
      pc_resp IN VARCHAR2) 
  IS 
      SELECT fa.application_id 
            ,fa.application_short_name 
            ,fr.responsibility_id 
            ,fr.responsibility_name 
            ,fr.responsibility_key 
            ,fsg.security_group_key 
      FROM  fnd_application fa 
            ,fnd_responsibility_vl fr 
            ,fnd_security_groups fsg 
      WHERE      LOWER (fr.responsibility_name) = LOWER (pc_resp) 
            AND fa.application_id = fr.application_id 
            AND fr.data_group_id = fsg.security_group_id; 
  TYPE tab_resp IS TABLE OF cur_resp%ROWTYPE; 
  l_tab_resp    tab_resp; 
 
  expt_no_user  EXCEPTION; 
  expt_no_resp  EXCEPTION; 
  l_expt_msg    VARCHAR2 (2000); 
BEGIN 
  --l_tab_user_list := tab_user_list (); 
  IF (l_tab_user_list.COUNT = 0) 
  THEN 
      l_expt_msg  := 'no user to change'; 
      RAISE expt_no_user; 
  END IF; 
 
  --l_arr_resp_list    := arr_resp_list (); 
  IF (l_arr_resp_list.COUNT = 0) 
  THEN 
      l_expt_msg  := 'no resp to add'; 
      RAISE expt_no_resp; 
  END IF; 
 
  -- loop user 
  > 
  FOR idx_tab_user_list IN l_tab_user_list.FIRST .. l_tab_user_list.LAST 
  LOOP 
      DBMS_OUTPUT.put_line ( 
            '>>> ' 
        || idx_tab_user_list 
        || ' , working for user (' 
        || l_tab_user_list (idx_tab_user_list) 
        || ')  
      -- check if user exist or active 
      OPEN cur_user (l_tab_user_list (idx_tab_user_list)); 
      FETCH cur_user 
      BULK  COLLECT INTO l_tab_user; 
      CLOSE cur_user; 
      IF (l_tab_user.COUNT = 0) 
      THEN 
        DBMS_OUTPUT.put_line ( 
              'user (' 
            || l_tab_user_list (idx_tab_user_list) 
            || ') is not exist or disabled'); 
        --CONTINUE loop_tab_user_list; 
        goto  goto_tab_user_list; 
      END IF; 
 
    -- loop responsibility 
    > 
      FOR idx_arr_resp_list IN l_arr_resp_list.FIRST .. l_arr_resp_list.LAST 
      LOOP 
        -- check if responsibility active 
        OPEN cur_resp (l_arr_resp_list (idx_arr_resp_list)); 
        FETCH cur_resp 
        BULK  COLLECT INTO l_tab_resp; 
        CLOSE cur_resp; 
        IF (l_tab_resp.COUNT = 0) 
        THEN 
            DBMS_OUTPUT.put_line ( 
                  'resp (' 
              || l_arr_resp_list (idx_arr_resp_list) 
              || ') is not exist or disabled'); 
            --CONTINUE loop_arr_resp_list; 
            goto  goto_arr_resp_list; 
        END IF; 
 
        -- add resp for user 
        DBMS_OUTPUT.put_line ( 
              'Adding resp (' 
            || l_arr_resp_list (idx_arr_resp_list) 
            || ') for user (' 
            || l_tab_user_list (idx_tab_user_list) 
            || ')'); 
        fnd_user_pkg.addresp ( 
            username    => l_tab_user_list (idx_tab_user_list) 
          ,resp_app    => l_tab_resp (1).application_short_name 
          ,resp_key    => l_tab_resp (1).responsibility_key 
          ,security_group => l_tab_resp (1).security_group_key 
          ,description => NULL 
          ,start_date  => TRUNC (SYSDATE) 
          ,end_date    => NULL); 
          >  null; 
      END LOOP loop_arr_resp_list; 
      > null; 
  END LOOP loop_tab_user_list; 
  COMMIT; 
EXCEPTION 
  WHEN expt_no_user 
  THEN 
      DBMS_OUTPUT.put_line (l_expt_msg); 
      ROLLBACK; 
  WHEN expt_no_resp 
  THEN 
      DBMS_OUTPUT.put_line (l_expt_msg); 
      ROLLBACK; 
END; 
 
/* 
>>> 1 , working for user (LIAO) Adding resp (system Administrator) for user (LIAO) 
Adding resp (Purchasing Super User) for user (LIAO) 
resp (Application Administrator) is not exist or disabled 
>>> 2 , working for user (KARL) Adding resp (system Administrator) for user (KARL) 
Adding resp (Purchasing Super User) for user (KARL) 
resp (Application Administrator) is not exist or disabled 
>>> 3 , working for user (xx) user (xx) is not exist or disabled 
*/ 
 
/* 
1.  The Oracle PL/SQL GOTO Statement 
 
*/ 

linux

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Explain InnoDB Full-Text Search capabilities. Explain InnoDB Full-Text Search capabilities. Apr 02, 2025 pm 06:09 PM

InnoDB's full-text search capabilities are very powerful, which can significantly improve database query efficiency and ability to process large amounts of text data. 1) InnoDB implements full-text search through inverted indexing, supporting basic and advanced search queries. 2) Use MATCH and AGAINST keywords to search, support Boolean mode and phrase search. 3) Optimization methods include using word segmentation technology, periodic rebuilding of indexes and adjusting cache size to improve performance and accuracy.

How do you alter a table in MySQL using the ALTER TABLE statement? How do you alter a table in MySQL using the ALTER TABLE statement? Mar 19, 2025 pm 03:51 PM

The article discusses using MySQL's ALTER TABLE statement to modify tables, including adding/dropping columns, renaming tables/columns, and changing column data types.

When might a full table scan be faster than using an index in MySQL? When might a full table scan be faster than using an index in MySQL? Apr 09, 2025 am 12:05 AM

Full table scanning may be faster in MySQL than using indexes. Specific cases include: 1) the data volume is small; 2) when the query returns a large amount of data; 3) when the index column is not highly selective; 4) when the complex query. By analyzing query plans, optimizing indexes, avoiding over-index and regularly maintaining tables, you can make the best choices in practical applications.

Can I install mysql on Windows 7 Can I install mysql on Windows 7 Apr 08, 2025 pm 03:21 PM

Yes, MySQL can be installed on Windows 7, and although Microsoft has stopped supporting Windows 7, MySQL is still compatible with it. However, the following points should be noted during the installation process: Download the MySQL installer for Windows. Select the appropriate version of MySQL (community or enterprise). Select the appropriate installation directory and character set during the installation process. Set the root user password and keep it properly. Connect to the database for testing. Note the compatibility and security issues on Windows 7, and it is recommended to upgrade to a supported operating system.

Difference between clustered index and non-clustered index (secondary index) in InnoDB. Difference between clustered index and non-clustered index (secondary index) in InnoDB. Apr 02, 2025 pm 06:25 PM

The difference between clustered index and non-clustered index is: 1. Clustered index stores data rows in the index structure, which is suitable for querying by primary key and range. 2. The non-clustered index stores index key values ​​and pointers to data rows, and is suitable for non-primary key column queries.

What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? Mar 21, 2025 pm 06:28 PM

Article discusses popular MySQL GUI tools like MySQL Workbench and phpMyAdmin, comparing their features and suitability for beginners and advanced users.[159 characters]

How do you handle large datasets in MySQL? How do you handle large datasets in MySQL? Mar 21, 2025 pm 12:15 PM

Article discusses strategies for handling large datasets in MySQL, including partitioning, sharding, indexing, and query optimization.

How do you drop a table in MySQL using the DROP TABLE statement? How do you drop a table in MySQL using the DROP TABLE statement? Mar 19, 2025 pm 03:52 PM

The article discusses dropping tables in MySQL using the DROP TABLE statement, emphasizing precautions and risks. It highlights that the action is irreversible without backups, detailing recovery methods and potential production environment hazards.

See all articles