首页 > 数据库 >9.Oracle创建函数

9.Oracle创建函数

时间:2022-12-15 17:22:24浏览次数:42  
标签:函数 -- 创建 score ls SQL Oracle PL

1.Oracle创建函数

Oracle创建函数是通过PL/SQL自定义编写的,通过关键字function按照自己的需求把复杂的业务逻辑封装进PL/SQL函数中,函数提供一个返回值,返回给使用者。
组成部分
1、输入部分:PL/SQL函数可以有输入参数,在调用函数时,必须给输入参数赋值。
2、逻辑计算部分:逻辑计算部分是由PL/SQL块组成业务逻辑计算部分。这部分主要是通过输入参数、表数据、SQL计算函数等进行逻辑计算得到想要的结果。
3、输出部分:通过逻辑计算部分,我们会得到一个函数的唯一返回值进行返回(函数必须要有返回值)。
语法结构

create [or replace] function 函数名 
([p1,p2...pn])
return datatype
is|as
--声明部分 
begin
--PL/SQL程序块
end

语法解析
1、function 是创建函数的关键字。
2、p1,p2...pn是函数的入参,Oracle创建的函数也可以不需要入参。
3、return datatype:是函数的返回值的类型
4、通过is承接着PL/SQL程序块。这部分是函数的计算内容。
案例:编写一个函数计算学生某一门课程在班级内的排名

create or replace function sf_score_pm(
p_in_stuid in varchar2,--学号
p_in_courseid in  varchar2 --课程ID
)
return number
is
ls_pm number:=0;
ls_score number:=0;
begin
  --获取该学生的成绩
  select t.score into ls_score from score t
   where t.stuid = p_in_stuid
     and t.courseid = p_in_courseid;
  --获取成绩比该学生高的人数
  select count(1) into ls_pm from score t
   where t.courseid = p_in_courseid
   and  t.score>ls_score;
   --得到该学生的成绩排名
   ls_pm:=ls_pm+1;
   return ls_pm;
exception
  when no_data_found  then
     dbms_output.put_line('该学生的课程:'||p_in_courseid|| '的成绩在成绩表中找不到');
end;

查看PL/SQL代码

select * from user_source where name='ST_GTM_UNITWET';

oracle函数修改和删除
Oracle函数的修改是通过or replace关键词对原有的函数进行编辑覆盖,因此可以通过pl/sql developer工具直接点击右键进行编辑修改,修改完点击执行,即可完成覆盖。

Oracle函数的删除是通过drop命令进行删除的,语法结构如下:

drop function 函数名;

标签:函数,--,创建,score,ls,SQL,Oracle,PL
From: https://www.cnblogs.com/mxx520/p/16985594.html

相关文章

  • 11.Oracle游标
    Oracle游标简介:Oracle游标是通过关键字CURSOR的来定义一组Oracle查询出来的数据集,类似数组一样,把查询的数据集存储在内存当中,然后通过游标指向其中一条记录,通过循环游标达......
  • k8s创建MySQL
    Kubernetes创建MysQL整体流程:创建数据存储PV、PVC;创建MySQL数据库、创建访问入口Service;导入测试数据库test-db创建数据存储PV、PVC这里我们使用nfs作为storageclass......
  • ORM执行SQL 双下划线查询 ORM外键字段创建 外键字段相关操作 ORM跨表查询 跨表查询进
    目录ORM执行SQL语句方式1:使用pymysql模块方式2:使用raw方法方式3:djangoconnection双下划线查询__gt(>)__lt(<)queryset对象特性__gte(≥)__lte(≤)__in__range__cont......
  • 傅立叶变换之后还是自己的函数都有哪些?
    原文地址傅立叶变换之后还是自己的函数都有哪些?-yhm138的回答-知乎https://www.zhihu.com/question/460357978/answer/1908160414太长不看aGaussianfunctiontim......
  • 简单创建webservice接口并采用rpc方式调用
    简单创建webservice接口并采用rpc方式调用一、简单创建webservice接口1.新建一个maven项目2.创建一个包3.创建一个接口在新建的包下创建接口点击查看代码public......
  • C# 解决“请求被中止: 未能创建 SSL/TLS 安全通道”的问题
    解决办法:让客户端启用该协议。具体就是在发起网络请求之前确保ServicePointManager.SecurityProtocol中含有服务端所用的安全协议,如果不知道或希望客户端健壮一点,当然最简......
  • PowerShell 创建一个文件选择器
    从这篇文章得到借鉴  PowerShell技能连载-创建一个文件夹选择器-叹为观止(vichamp.com)(80条消息)PowerShellGUI之基础知识_feiqizhanghao的博客-CSDN博客_po......
  • 将一句话的单词进行倒置,标点不倒置。比如I like beijing.经过函数后变为beijing like
    #include<stdio.h>#include<string.h>#include<assert.h>voidreverse(char*left,char*right){ while(left<right) {  chartmp=0; tmp=*left; *left......
  • 腾讯云函数
    初探serverless(腾讯云函数)经过梳理,到数据库那就不能白嫖了,毕---------------------------------------------生活的意义并不是与他人争高下,而在于享受努力实现目标的......
  • MySQL函数
    常用函数--数学运算SELECTABS(-8)--绝对值SELECTCEILING(7.8)--向上取整SELECTFLOOR(7.8)--向下取整SELECTRAND()--返回0~1随机数SELECTSIGN(0)--......