Oracle学习笔记之存储过程与函数

2014-11-24 18:11:29 · 作者: · 浏览: 0

DECLARE


...


BEGIN


...


EXCEPTION


...


END


可用来将对数据库的各种操作封装为一个代码块,为了加强可重用性,还可将重复性代码写成函数与存储过程,用参数表示变化的部分。


函数与存储过程的区别是,函数返回一个值,而存储过程没有返回值,不过存储过程也可通过指定参数的IN|OUT形式来达到将处理结果读出来的目的。



1.存储过程创建示例:


CREATE OR REPLACE PROCEDURE callme(p1 number,p2 varchar2,p3 varchar2) AS


BEGIN


INSERT INTO test values(p1,p2);


END callme;


2.存储过程使用示例:


DECLARE


val1 number:=16;


val2 varchar2(20):='过程插入的新部门2';


val3 varchar2(12);


BEGIN


callme(val1,val2,val3);


END;


3.函数创建示例:


CREATE OR REPLACE FUNCTION CountRows(p1 number) RETURN NUMBER AS


v_number NUMBER;


BEGIN


SELECT count(*) INTO v_number FROM test WHERE id > p1;


RETURN v_number;


END;


4.函数调用示例:


set serveroutput on /*只有设置了这行,才会显示输出结果*/


DECLARE


v_number NUMBER;


p_minid NUMBER;


BEGIN


p_minid:=0;


v_number:=CountRows(p_minid);


DBMS_OUTPUT.PUT_LINE('部门号大于'||p_minid||'的部门有'||v_number||'个');


END;