• 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;
  • 相关阅读:
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    log4net写txt日志
    easyui上传文件
    让 SVN (TortoiseSVN)提交时忽略bin和obj目录
    C#进阶系列——WebApi 跨域问题解决方案:CORS
    js控制radio选中
    sql注入
    修改类不用重启Tomcat加载整个项目
    URIEncoding与useBodyEncodingForURI 在tomcat中文乱码处理上的区别
    ActiveMQ 使用场景
  • 原文地址:https://www.cnblogs.com/yuelien/p/6628090.html
Copyright © 2020-2023  润新知