Oracle存儲過程創(chuàng)建和使用舉例
oracle 存儲過程創(chuàng)建和使用舉例
1.創(chuàng)建存儲過程create or replace package pk_1 as; //創(chuàng)建包的聲明TYPE cur is ref cursor; //聲明一個(gè)指針procedure p1(cr out cur); end;
/
create or replace package body pk_1 as; //創(chuàng)建包體 procedure p1(cr out cur) is begin open cr for select STATUS,table_name; from dba_tables; end; end;
/
2.調(diào)用(在sqlplus中):set serveroutput on //設(shè)置允許進(jìn)行輸出操作/
declare cc pk_1.cur; s varchar2(20);t varchar2(30);c11 number :=0; //變量c11一定要賦初值,不然將不能正常運(yùn)算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.對于不是返回一個(gè)結(jié)果集的存儲過程的調(diào)用
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 中運(yùn)行procedure第一種調(diào)用方式:
(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;第二種調(diào)用方式:
(2) var cc varchar(20) p1(1,:cc) print cc;
