Loading

oracle 学习(三)pl/sql语言函数

  • 系统内置函数
    1. 数学运算函数
    2. 字符串函数
    3. 统计函数
    4. 日期函数
  • 用户定义函数:存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样
    • 参数模式
      1. IN模式:表示该参数时输入给函数的参数
      2. OUT模式:表示该参数在函数中被赋值,可以传给函数调用程序
      3. IN OUT模式:表示该参数既可以传值也可以被赋值
    • 创建函数
      1.  1 CREATE[OR REPLACE]FOUNCTION<函数名>
         2 (
         3    <参数名1>,<参数类型><数据类型>,
         4    <参数名2>,<参数类型><数据类型>,
         5    <参数名3>,<参数类型><数据类型>,
         6     ...
         7 )
         8   RETURN<返回值类型>    /*定义返回值类型*/
         9   {IS|AS}
        10    [声明变量]
        11    BEGIN
        12             <函数体>
        13             [RETURN(<返回表达式>);]
        14    END[<函数名>];

         

         1 CREATE OR REPLACE FUNCTION 函数名称
         2 (
         3     in_pmt IN char,
         4     out_pmt OUT char,
         5     in_out_pmt IN OUT char
         6 )
         7   RETURN char
         8   AS
         9   return_char char;
        10   BEGIN
        11           <函数语句序列>
        12            RETURN(return_char);
        13   END[函数名称]
        View Code

         

         1 CREATE OR REPLACE FUNCTION average(cnum IN char)
         2    RETURN number
         3    AS
         4    avger number;
         5    BEGIN 
         6           SELECT AVG(成绩)INTO avger
         7                 FROM CJB
         8                  WHERE 课程号=cnum
         9                   GROUP BY 课程号;
        10            RETURN(avger);
        11      END;
        View Code

         

      2. 语法要求
        1 函数语句序列中可能出现的情况
        2 IN模式:传递参数 对应变量为右值
        3 OUT模式:在函数中被赋值 对应变量为左值
        View Code

         

      3. 调用函数
         1 CREATE OR REPLACE FUNCTION count_num(in_sex IN)
         2      RETURN number
         3  AS
         4       out_num number;
         5  BEGIN
         6       IF in_sex=''THEN
         7            SELECT COUNT(性别)INTO out_num;
         8                 FROM XSB WHERE 性别=‘男';
         9       ELSE
        10             SELECT COUNT(性别)INTO out_num;
        11                 FROM XSB WHERE 性别=‘女';
        12       END IF
        13        RETURN(out_num);
        14 END count_num;
        View Code

         

         1 无论是在命令行还是在程序语句中,都可以通过名称直接在表达式中调用函数
         2 格式:
         3 <变量名>:=<函数名>[(<实参1>,<实参2>,..)]
         4 
         5 DECLARE
         6          girl_num number;
         7 BEGIN
         8          girl_num:=count_num('');
         9          DBMS_OUTPUT.PUT_LINE(TO_CHAR(girl_num));
        10 END;
        View Code

         

      4. 删除函数
        1 DROP FUNCTION [<用户方案名>.]<函数名>
        2 eg:
        3 DROP FUNCTION count_num;

         

posted @ 2017-03-27 18:15  ArkiWang  阅读(191)  评论(0编辑  收藏  举报