plsql儲存過程

第九章  存儲過程數據庫

 

初識存儲過程對象

  存儲過程(Stored Procedure)是在大型數據庫系統中,一組爲了完成特定功能的SQL 語句集,存儲在數據庫中,通過第一次編譯後調用不須要再次編譯,用戶經過指定存儲過程的名字並給出參數(若是該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象。get

  包含一系列PL/SQL語句的集合。input

 

建立存儲格式it

CREATE [OR REPLACE] PROCEDURE procedure_nameio

  (argument1 [mode1] datatype1,編譯

   argument2 [mode2] datatype2, ...)date

AS [IS]select

   聲明部分exception

BEGIN

   執行部分

EXCEPTION

   異常處理部分

END;

調用存儲過程格式

call proc_update_emp();

 

示例:

create or replace procedure pro_stu_update

as

begin

  update student set stu_name='edit_name' where stu_id=5;

end;

-- 調用

call pro_stu_update();

 

in 示例

-- 根據員工號,查詢員工工資

create or replace procedure

       -- in表示入參

       pro_emp_selectArray(v_empId in employees.employee_id%type)

as     v_sal employees.salary%type;

begin

  select salary into v_sal from employees where employee_id=v_empId;

  DBMS_OUTPUT.PUT_LINE('salary:' || v_sal);

end;

-- call調用

call pro_emp_selectArray(198);

 

in/out 示例

-- 根據員工號,查詢員工工資 帶out參數

create or replace procedure

       -- in表示入參,out表示出參

       pro_emp_selectArray(v_empId in employees.employee_id%type,v_sal out employees.salary%type)

as

begin

  select salary into v_sal from employees where employee_id=v_empId;

  DBMS_OUTPUT.PUT_LINE('salary:' || v_sal);

end;

-- PL/SQL調用

declare

   -- 對應的參數類型和數量保持一致

   v_empId employees.employee_id%type := '&input_empId';

   v_sal employees.salary%type;

begin

  pro_emp_selectArray(v_empId,v_sal);

exception

  when no_data_found then

    DBMS_OUTPUT.PUT_LINE('找不到對應員工'); 

end;

 

 

inout示例

create or replace procedure

       -- in/out 參數共用,必須保持參數類型相同

       pro_emp_selectArray(v_param  in out number)

as

begin

  select manager_id into v_param from employees where employee_id=v_param;

  DBMS_OUTPUT.PUT_LINE('salary:' || v_param);

end;

-- PL/SQL調用

declare

   v_param number := '&input_param';

begin

  pro_emp_selectArray(v_param);

exception

  when no_data_found then

    DBMS_OUTPUT.PUT_LINE('找不到對應員工'); 

end;

 

多參數傳遞 示例

create or replace procedure

       pro_multi_params(param1 in number,param2 in number,param3 in number)

as v_sum  number;

begin

  v_sum := param1+param2+param3;

  DBMS_OUTPUT.PUT_LINE('v_sum:' || v_sum);

end;

-- call調用

call pro_multi_params(1,2,3);

相關文章
相關標籤/搜索