1.在開發程式中,為了乙個特定的業務功能,會向資料庫進行多次連線關閉連線(連線和關閉資料庫是很耗費資源的),需要對資料庫進行多次i/o讀寫,效能比較低。如果把這些業務放到plsql中,在應用程式中只需要呼叫plsql就可以做到連線關閉一次資料庫就可以實現我們的業務,可以大大提高效率。
2.oracle官方給出的解釋:能夠讓資料庫操作的不要放在程式中,在資料庫實現基本不會出錯,在程式操作中可能會出錯,(如果在資料庫中操作,可以有一點的日誌恢復等功能)
3.語法
create or replace procedure 過程名稱 [(引數列表)] is
begin
end 過程名稱;
3.1 無參儲存
create or replace procedure p_a is
begin
dbms_output.put_line('hello world');
end p_a;
呼叫儲存過程:
begin
-- call the procedure
p_a;
end;
執行結果:
3.2 帶輸入引數的儲存過程
--查詢並列印員工號7839的姓名和薪水
--儲存過程,要求:呼叫的時候傳入員工編號,自動控制列印
create or replace procedure p_query(i_empno in emp.empno%type) as
--宣告變數
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
select ename,sal into v_ename,v_sal from emp where empno = i_empno;
--列印變數
dbms_output.put_line('姓名:' || v_ename || '薪水:' || v_sal);
end p_query;
呼叫:
begin
-- call the procedure
p_query(7839);
end;
結果:
3.3 帶輸入輸出的儲存過程
--查詢並列印員工號7839的姓名和薪水
--儲存過程,要求:呼叫的時候傳入員工編號,自動控制列印
create or replace procedure p_shuchu(i_empno in emp.empno%type,o_sal out emp.sal%type) as
--宣告變數
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
select sal into o_sal from emp where empno = i_empno;
--列印變數
end ;
呼叫:
declare
--宣告變數
v_sal emp.sal%type;
begin
-- call the procedure
p_shuchu(7839,v_sal);
dbms_output.put_line('薪水:'||v_sal);
end;
執行結果:
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...