Oracle存儲過程創建和使用舉例
oracle 存儲過程創建和使用舉例
1.創建存儲過程create or replace package pk_1 as; //創建包的聲明TYPE cur is ref cursor; //聲明一個指針procedure p1(cr out cur); end;
/
create or replace package body pk_1 as; //創建包體 procedure p1(cr out cur) is begin open cr for select STATUS,table_name; from dba_tables; end; end;
/
2.調用(在sqlplus中):set serveroutput on //設置允許進行輸出操作/
declare cc pk_1.cur; s varchar2(20);t varchar2(30);c11 number :=0; //變量c11一定要賦初值,不然將不能正常運算beginpk_1.p1(cc);loop fetch cc into s,t; exit when cc%notfound; c11 := c11 + 1; dbms_output.put_line('status = ' || s || '; table_name; = ' || t);end loop;close cc;dbms_output.put_line(c11);end;
/
3.對于不是返回一個結果集的存儲過程的調用
CREATE OR REPLACE PROCEDURE p1( parameter1 in number, parameter2 out number; ) is value1 INTEGER :=0;begin select count(*) into value1 from dba_tables where table_name like '%t%'; parameter2 := value1;end p1;
sqlplus 中運行procedure第一種調用方式:
(1)set serveroutput on declare v_p_o_succeed varchar2; begin pr_jwry_info('a_p_i_date',v_p_o_succeed) ; dbms_output.put_line(v_p_o_succeed); end;第二種調用方式:
(2) var cc varchar(20) p1(1,:cc) print cc;
