oracle 存儲過程深刻學習與應用

  對於存儲過程已經有過一週的學習時間了,可是之學到一些皮毛,爭取根據基礎,熟練後能進行深刻。數據庫

--一、存儲過程建立存儲過程的語法:
  CREATE [
  OR
  REPLACE ]
  PROCEDURE procedure_name [
                            (
                                parameter_list
                            ) ] {IS | AS} [ local_declarations ]
      BEGIN
          executable_statements [
      EXCEPTION
          exception_handlers ]
      END [ procedure_name ];
      --其中:procedure_name是過程的名稱。 parameter_list是參數列表。 local_declarations是局部聲明。 executable_statements是可執行語句。 exception_handlers是異常處理程序。
      --示例1: 演示建立過程(參數列表中爲IN參數賦予一個默認值,不能爲OUT、IN OUT參數賦予默認值)
      create or replace procedure find_emp
                                          (
                                              emp_no in number := 7900
                                          )
      as
          empname varchar2(20);
      begin
          select
              ename
          into
              empname
          from
              emp
          where
              empno = emp_no
          ;
          
          dbms_output.put_line('僱員姓名是 '
          || empname);
      exception
      when no_data_found then
          dbms_output.put_line('僱員編號未找到');
      end find_emp;
      --調用過程:EXECUTE procudure_name(parameters_list);
      --也能夠在過程裏面調用,直接寫上procudure_name而沒必要寫EXECUTE。
      --示例2:演示建立帶OUT參數的過程
      create or replace procedure test
                                      (
                                          value1 varchar2
                                        , value2 out number
                                      )
      is
          identity number;
      begin
          select
              sal
          into
              identity
          from
              emp
          where
              empno = value1
          ;
          
          if identity < 2000 then
              value2 := 1000;
          else
              value2 := 500;
          end if;
      end;
      --調用帶OUT參數的過程:
      declare
          value2 number;
      begin
          test('7900', value2);
          dbms_output.put_line(value2);
      end;
      --示例3:演示建立帶IN OUT參數的過程
      create or replace procedure swap
                                      (
                                          p1 in out number
                                        , p2 in out number
                                      )
      is
          v_temp number;
      begin
          v_temp := p1;
          p1     := p2;
          p2     := v_temp;
      end;
      --調用帶IN OUT參數的過程:
      declare
          num1 number := 100;
          num2 number := 200;
      begin
          swap(num1, num2);
          dbms_output.put_line('num1= '
          || num1);
          dbms_output.p ut_line('num2= '
          || num2);
      end;
      --示例4:將過程的執行權限授予其餘用戶
      GRANT EXECUTE ON find_emp TO scott;
      GRANT EXECUTE ON swap TO PUBLIC;
      --將find_emp過程的執行權限授予給用戶scott,將執行swap過程的權限授予全部數據庫用戶。
      --刪除過程語法:
      DROP PROCEDURE procudure_name;
相關文章
相關標籤/搜索