119.Oracle数据库SQL开发之 PLSQL编程——函数
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50086957
函数与过程很相似,唯一区别是函数必须向调用它的语句返回一个值。存储过程和函数有时合起来被称为存储子程序。
1. 创建函数
CREATE FUNCTION语句用于创建函数。
创建一个函数如下:
CREATE FUNCTION circle_area (
p_radius INNUMBER
) RETURN NUMBER AS
v_pi NUMBER := 3.1415926;
v_areaNUMBER;
BEGIN
-- circlearea is pi multiplied by the radius squared
v_area :=v_pi * POWER(p_radius, 2);
RETURNv_area;
END circle_area;
/
返回一个NUMBER类型的值,计算出圆的面积。
CREATE FUNCTION average_product_price (
p_product_type_id IN INTEGER
) RETURN NUMBER AS
v_average_product_priceNUMBER;
BEGIN
SELECTAVG(price)
INTOv_average_product_price
FROM products
WHEREproduct_type_id = p_product_type_id;
RETURNv_average_product_price;
END average_product_price;
/
2. 调用函数
可以像调用其他数据库内置函数那样调用自定义的函数。
执行如下:
store@PDB1>select circle_area(2) from dual;
CIRCLE_AREA(2)
--------------
12.5663704
也可以如下调用:
store@PDB1> select circle_area(p_radius=>4)from dual;
CIRCLE_AREA(P_RADIUS=>4)
------------------------
50.2654816
store@PDB1> select average_product_price(1) fromdual;
AVERAGE_PRODUCT_PRICE(1)
------------------------
40.33
3. 获取函数的信息
从user_procedures视图中可以获得有关函数的信息;
store@PDB1> select object_name,aggregate,parallelfrom user_procedures where object_name in('CIRCLE_AREA','AVERAGE_PRODUCT_PRICE');
OBJECT_NAME
----------------------------------------------------------------------------------------------------
AGG PAR
--- ---
AVERAGE_PRODUCT_PRICE
NO NO
CIRCLE_AREA
NO NO
4. 删除函数
DROP FUNCTION用于删除函数。
例如:
DROP FUNCTION circle_area;