130823创建函数

SQL> create or replace function circle_area (
  2  p_radius in number
  3  ) return number as
  4  v_pi number := 3.1415926;
  5  v_area number;
  6  
  7  begin
  8    v_area := v_pi * power(p_radius, 2);
  9    return v_area;
 10  
 11  end circle_area;
 12  /
 
Function created
 
SQL> select circle_area(2) from dual;
 
CIRCLE_AREA(2)
--------------
    12.5663704


SQL> create or replace function average_product_price(
  2  p_product_type_id in integer
  3  ) return number as
  4  v_average_product_price number;
  5  
  6  begin
  7    select avg(price)
  8    into v_average_product_price
  9    from products
 10    where product_type_id = p_product_type_id;
 11    return v_average_product_price;
 12  end average_product_price;
 13  /
 
Warning: Function created with compilation errors
 
SQL> show error;
Errors for FUNCTION CALVIN.AVERAGE_PRODUCT_PRICE:
 
LINE/COL ERROR
-------- -----------------------------------------------
9/8      PL/SQL: ORA-00942: table or view does not exist
7/3      PL/SQL: SQL Statement ignored
 
SQL> 
SQL> create or replace function average_product_price(
  2  p_product_type_id in integer
  3  ) return number as
  4  v_average_product_price number;
  5  
  6  begin
  7    select avg(price)
  8    into v_average_product_price
  9    from store.products
 10    where product_type_id = p_product_type_id;
 11    return v_average_product_price;
 12  end average_product_price;
 13  /
 
Function created
 
SQL> select calvin.average_product_price(1) from dual;
 
CALVIN.AVERAGE_PRODUCT_PRICE(1
------------------------------
                       22.4825
 

这里需要注意,查询函数使用user_procedures视图,系统中不存在users_functions视图;

SQL> select * from user_procedures;
 
OBJECT_NAME                                                                      PROCEDURE_NAME                  OBJECT_ID SUBPROGRAM_ID OVERLOAD                                 OBJECT_TYPE         AGGREGATE PIPELINED IMPLTYPEOWNER                  IMPLTYPENAME                   PARALLEL INTERFACE DETERMINISTIC AUTHID
-------------------------------------------------------------------------------- ------------------------------ ---------- ------------- ---------------------------------------- ------------------- --------- --------- ------------------------------ ------------------------------ -------- --------- ------------- ------------
AVERAGE_PRODUCT_PRICE                                                                                                75103             1                                          FUNCTION            NO        NO                                                                      NO       NO        NO            DEFINER
UPDATE_PRODUCT_PRICE                                                                                                 75101             1                                          PROCEDURE           NO        NO                                                                      NO       NO        NO            DEFINER
CIRCLE_AREA                                                                                                          75102             1                                          FUNCTION            NO        NO                                                                      NO       NO        NO            DEFINER
 


SQL> drop function circle_area;
 
Function dropped
 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值