oracle數據庫中的存儲過程


存儲過程是一組為了完成特定功能的sql語句集,是一段sql代碼片段,經編譯后存儲在數據庫中,用戶通過指定存儲過程的名字並給出參數(如果存儲過程存在參就給出,不存在就不用給出參數)來執行它。因為它是一段sql語句代碼並且已經編譯好了存放在數據庫中,所以它的執行效率非常高。

存儲過程的創建如下:

    create [or replace] procedure 過程名 [(參數名 in|out 數據類型)]
    as|is
      變量的聲明
    begin
      plsql的子程序體;
    end;//如果是is,end 后面要加上過程名。

存儲過程的調用

  第一種:call 存儲過程名(參數);

  第二種:begin

         存儲過程名(參數);

      end;

例如1:給指定的員工漲工資100,並打印出漲前和漲后的工資

創建存儲過程:

    create or replace procedure addsal(eno in number) is

      pemp emp%rowtype;
    begin
      select * into pemp from emp where empno = eno;
      update emp set sal = sal + 100 where empno = eno;
      dbms_output.put_line('ename:' || pemp.ename || 'after' || (pemp.sal+100));
    end addsal;

調用存儲過程:

    第一種調用:call addsal(7369);

    第二種調用:

      begin
        addsal(eno=>7369);
        commit;//因為oracle數據庫是手動提交的,所有涉及到的增刪改都必須commit;
      end;

例如2:輸出所有員工的姓名和工資

創建存儲過程:

    create or replace procedure infoemp as
      cursor allemp is
        select * from emp;//創建一個游標
      enemp emp%rowtype;
    begin
      open allemp;
      loop
        fetch allemp
          into enemp;//利用循環從游標中取數據
        dbms_output.put_line(enemp.ename || ' '||enemp.sal);
      exit when allemp%notfound;//退出循環條件
      end loop;
      close allemp;
    end;

調用存儲過程:

第一種: call infoemp();

第二種: begin
      infoemp();
    end;

以上就是oracle數據庫的存儲過程的基本知識和用法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM