初識儲存過程
儲存過程(stored procedure)是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的乙個重要物件。
包含一系列pl/sql語句的集合。
建立儲存格式
create [or replace] procedure procedure_name
(argument1 [mode1] datatype1,
argument2 [mode2] datatype2, …)
as [is]
宣告部分
begin
執行部分
exception
異常處理部分
end;
呼叫儲存過程格式
call proc_update_emp();
示例:create or replace procedure pro_stu_update
asbegin
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)
asbegin
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)
asbegin
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);
PL SQL儲存過程
or replace 建立或替換,如果存在就替換,不存在就建立create or replace procedure piscursor cisselect from dept2 for update beginfor row record in c loopif row record.deptno...
pl sql 儲存過程
在這段時間的開發中資料庫用的是oracle以前用的都是mssql它們的儲存過程的寫法還有一點不一樣,所以花了一天的時間看了看!以下是我做的乙個小例子!create table mytesttable id number,name varchar2 10 insert into mytesttable...
PL SQL 儲存過程
1 游標的設計開發 什麼是游標,為什麼用游標,怎樣使用游標 2 儲存過程 儲存過程的建立,引數使用,儲存過程的執行 3 儲存函式的設計 函式的建立,引數使用,函式的呼叫 4 包的設計與應用 什麼是包,包的建立及使用 儲存過程 建立語法 create or replace procedure proc...