一個簡單的oracle預存程序

來源:互聯網
上載者:User

到現在,寫過2,3百個oralce預存程序,函數,觸發器等,寫過1百多個sql server的預存程序.下面貼一個我寫的第一個oracle預存程序,見證成長的曆程吧,呵呵

-- 功能:  複製使用者 
-- 建立人: applegreen 
-- 更新時間: 2004-8-18 
CREATE OR REPLACE PROCEDURE p_copy_user_rights 
       (olduserid  IN  NUMBER,  
         newusername  IN   CHAR,  
         newpassword IN CHAR,  
         newuserdesc IN CHAR 
 ) 
 IS  
           p_USER_ID       NUMBER(38);  
           p_USER_NAME     CHAR(10);  
           p_USER_PASSWORD CHAR(100); 
           p_USER_DESC     VARCHAR2(40);  
           CURSOR c1 IS    select GROUP_ID from T_USR_GROUP_ASS where user_id= oldUserId;  
           c1_group_id     T_USR_GROUP_ASS.GROUP_ID%type;  
           CURSOR c2 IS    select ROLE_ID,DATA_RIGHT from  T_USR_ROLE_ASS where usr_id= oldUserId;  
           c2_role_id      T_USR_ROLE_ASS.ROLE_ID%type;  
           c2_data_right   T_USR_ROLE_ASS.DATA_RIGHT%type; 
       BEGIN 
--   **************** step1 更新使用者資訊表 **************** 
--   變數 p_USER_ID 
   select SHEET_NO+1 into p_USER_ID from T_BI_SHEET_NO where SHEET_NAME='user_id'; 
--   變數 p_USER_NAME = newusername; 
 p_USER_NAME := newusername; 
--   變數 p_USER_PASSWORD 
 p_USER_PASSWORD :=newpassword; 
--   變數 p_USER_DESC 
--   select USER_DESC into p_USER_DESC from T_USR_USR where USER_ID =olduserid; 
 p_USER_DESC :=newuserdesc; 
--   執行插入T_USR_USR 
   insert into T_USR_USR (USER_ID,USER_NAME,USER_PASSWORD,USER_CREATE_DATE,USER_UPD_DATE,USER_DESC) 
   values (p_USER_ID,p_USER_NAME,p_USER_PASSWORD,sysdate,sysdate,p_USER_DESC); 
--   執行更新T_BI_SHEET_NO 
   update T_BI_SHEET_NO set SHEET_NO=p_USER_ID where SHEET_NAME='user_id'; 
--  **************** step2: 更新使用者組表 **************** 
--   建議一個暫存資料表temp: 
--   將sql語句:select * from T_USR_GROUP_ASS where user_id= @oldUserId 查詢到temp中, 
--   對於temp中的每一條記錄,迴圈執行 
--   { 
--    @GROUP_ID=temp.group_id; 
--    @USER_ID=(select (T_BI_SHEET_NO. user_id) from T_BI_SHEET_NO )+1; 
--    將新資訊插入資料庫中 
--   }到迴圈結束 
 OPEN c1; 
 LOOP 
  fetch c1 into c1_group_id; 
  exit when c1%notfound;   
  IF c1_group_id IS NOT NULL THEN 
  BEGIN 
   insert into T_USR_GROUP_ASS(USER_ID,GROUP_ID,UPD_DATE) 
   values (p_USER_ID,c1_group_id,sysdate); 
  END; 
  END IF; 

 END LOOP; 
   CLOSE c1; 
-- **************** step3: 更新使用者權限表 **************** 
-- 建議一個暫存資料表temp 
-- 將sql語句select USR_ID,ROLE_ID,DATA_RIGHT,UPD_DATE 
--  from T_USR_ROLE_ASS 
--  where T_USR_ROLE_ASS.USR_ID= @oldUserId 選擇到temp中. 
-- 對於temp中的每一條記錄,迴圈執行 
--  @ROLE_ID=temp.role_id 
--  @USER_ID=(select (T_BI_SHEET_NO. user_id) from T_BI_SHEET_NO )+1; 
-- }直到迴圈結束為止 
 OPEN c2; 
 LOOP   
  fetch c2 into c2_role_id,c2_data_right; 
  exit when c2%notfound; 
  IF c2_role_id IS NOT NULL THEN 
   BEGIN 
   insert into T_USR_ROLE_ASS(USR_ID,ROLE_ID,DATA_RIGHT,UPD_DATE) 
   values (p_USER_ID,c2_role_id,c2_data_right,sysdate); 
  END; 
  END IF; 
 END LOOP; 
 CLOSE c2; 
      END; 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.