Oracle開發包

來源:互聯網
上載者:User

建立包規範

  1. create or replace package emp_package is  
  2.   g_deptno number(3):=30;  
  3.   procedure add_employee(eno number, ename varchar2,sal number,dno number default g_deptno);  
  4.   procedure fire_employee(eno number);  
  5.   function get_sal(eno number)return number;  
  6. end emp_package;---end 後面可以跟定義的名稱   
建立包體
  1. create or replace package body emp_package is  
  2.   function validate_deptno(v_deptno number)return boolean is       ----validate_deptno   
  3.   v_temp int;  
  4. begin  
  5.   select 1 into v_temp from dept where deptno=v_deptno;  
  6.   return true;  
  7. exception  
  8.   when no_data_found then return false;  
  9. end validate_deptno;  
  10. procedure add_employee(eno number, ename varchar2,sal number,dno number default g_deptno)is---add_employee   
  11. begin  
  12.   if validate_deptno(dno)then   
  13.      insert into emp(empno,ename,sal,deptno)values(eno,ename,sal,dno);  
  14.   else  
  15.      RAISE_ApPLICATION_ERROR(-20000,'不存在該部門');  
  16.   end if;  
  17. exception  
  18.   when dup_val_on_index then RAISE_APpLICATION_ERROR(-20011,'該僱員已存在');  
  19. end add_employee;  
  20. procedure fire_employee(eno number)is            --------fire_employee   
  21. begin  
  22.   delete from emp where empno=eno;  
  23.   if sql%notfound then   
  24.     RAISE_APPLICATION_ERROR(-20012,'該僱員不存在');  
  25.   end if;  
  26. end fire_employee;  
  27. function get_sal(eno number)return number is ---get_sal   
  28.   v_sal emp.sal%type;<pre name="code" class="sql">create or replace package body emp_package is  
  29.   procedure add_employee(eno numberk,ename varchar2,salary number,dno number default g_deptno)is  
  30. begin  
  31.   if validate_deptno(dno)then  
  32.     insert into emp(empno,ename,sal,deptno)values(eno,ename,salary,dno);  
  33.   else  
  34.     raise_application_error(-20010,'不存在該部門');  
  35.   end if;  
  36. exception   
  37.   when dup_val_on_index then  
  38.     raise_application_error(-20011,'該僱員已存在');  
  39. end;  
begin select sal into v_sal from emp where empno=eno; return v_sal;exception when no_data_found then RAISE_ApPLICATION_ERROR(-20012,'該僱員不存在');end get_sal;end emp_package;
調用包組件1.在同一個包內調用
  1. create or replace package body emp_package is<pre name="code" class="sql">  
procedure add_employee(eno numberk,ename varchar2,salary number,dno number default g_deptno)isbegin if validate_deptno(dno)then insert into emp(empno,ename,sal,deptno)values(eno,ename,salary,dno); else raise_application_error(-20010,'不存在該部門'); end if;exception when dup_val_on_index then raise_application_error(-20011,'該僱員已存在');end;
2.調用公用變數
  1. declare  
  2. begin  
  3.  emp_package.g_deptno:=21;  
  4. end;  
3.調用公用過程
  1. declare  
  2. begin  
  3.  emp_package.add_employee(1212,'yang',2000,10);------部門不給值會報錯   
  4.  emp_package.add_employee(2121,'tender',2000,20);  
  5. end;  
4.調用公用函數
  1. declare  
  2.  salary number;  
  3. begin  
  4.  salary:=emp_package.get_sal(7788);  
  5.  dbms_output.put_line(salary);  
  6. end;  
----當使用其他使用者身份調用公用群組件時,必須在組件名前加使用者名稱和包名作為首碼
----SCOTT.EMP_PACKAGE.。。。。


----當調用遠端資料庫包的公用群組件是,在組件名前加包名作為首碼在組件名後需要帶有資料庫鏈名作為尾碼
----EMP_PACKAGE.ADD_EMPLOYEE@TENDER(1111,'SCOTT',1233,10)
----查看原始碼
----select text from user_source where name='emp_package'and type='package'
  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.