2024-03-19  阅读(3)
原文作者:吴声子夜歌 原文地址: https://blog.csdn.net/cold___play/article/details/103838223

函数

函数一般用于计算和返回一个值,可以将经常需要进行的计算写成函数。函数的调用是表达式的一部分,而过程的调用是一条PL/SQL语句。

函数与过程在创建形式上有些相似,也是编译后放在内存中供用户使用,只不过调用时函数要用表达式,而不像过程只需调用过程名。另外,函数必须有一个返回值,而过程则没有。

创建函数

创建函数的语法和创建存储过程的语法也很相似。它们在数据库内采用相同的规则,参数的传递也相同。

创建函数的基本语法如下:

    CREATE [OR REPLACE] FUNCTION function_name
    [parameter1 [IN|OUT|IN OUT]data_type1,
    parameter2 [IN|OUT|IN OUT]data-type2,
    ......]
    RETURN data_type;
    IS|AS
    	声明部分
    BEGIN
    	执行部分
    EXCEPTION
    	异常处理部分
    END [function_name];

在语法结构上,定义存储过程和函数的区别主要有两处:

  • 一是函数有RETURN数据类型子句,用于指定函数返回值的数据类型;
  • 二是在函数体内,用户可以在任何地方使用RETURN语句返回值,其返回值的数据类型必须是函数头中声明的,并且执行RETURN语句后函数将返回,不再执行下面的语句。

示例:创建函数用于求两个数的平均值

    create or replace function f_avg(num1 in number,num2 in number)
    return number as
    result_avg number;
    begin
      result_avg :=(num1 + num2)/2;
      return result_avg;
    end f_avg;
    /

创建函数之后就可以在需要时调用,调用函数与调用过程不同。调用函数时需要一个变量来保存函数的返回的结果值,这样函数就组成了表达式的一部分。这也就意味着,函数不能像调用过程那样独立地调用。

使用匿名程序块中调用函数f_avg()获取两个数的平均值:

202403192031352731.png

创建函数用于计算选修某门课程的学生人数

    create or replace function f_count(c_name in varchar2) return number
    as resultCount number;
    begin
      select count(distinct s.Sno) into resultCount
      from student s,course c,sc sc
      where s.Sno=sc.Sno and c.Cno=sc.Cno and c.Cname=c_name;
      return(resultCount);
    end f_count;
    /

202403192031356332.png

202403192031359713.png

调用函数

函数声明时所定义的参数成为形式参数,应用程序调用时为函数传递的参数称为实际参数。实际参数和形式参数之间的数据传递有两种方法: 传址法和传值法

调用函数和调用过程有所不同,需要一个变量来保存返回的值,这样函数就组成了表达式的一部分。因此不能像调用过程那样独立地调用函数。

删除函数

对于不再使用的函数,可以使用DROP FUNCTION语句进行删除,语法如下:

    DROP FUNCTION <function_name>;

202403192031363634.png


Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。

它的内容包括:

  • 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
  • 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
  • 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
  • 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
  • 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
  • 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
  • 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
  • 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw

目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:

想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询

同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。

阅读全文