DB2中的函数原理同其他编程语言中的函数,均为输入几个参数,同时返回一个值。

下面的例子演示一个寻找某一次考试中成绩最好的学生的姓名。

首先,我们新建一个表SCORE用于表示考试,并插入几条数据:

DROP TABLE SCORE;
CREATE TABLE SCORE (
EXAM_ID INT, -- 考试编号
STUDENT_ID INT, -- 学生编号
STUDENT_NAME VARCHAR(50), -- 学生姓名
POINT INT -- 成绩
);
INSERT INTO SCORE VALUES (1,1,'刘玄德',90);
INSERT INTO SCORE VALUES (1,2,'关云长',95);
INSERT INTO SCORE VALUES (1,3,'张翼德',60);

然后编写用于寻找某场考试的最佳成绩者的姓名的函数,如下:

CREATE OR REPLACE FUNCTION FUNC_BEST (IN IN_EXAM_ID INT)
RETURNS VARCHAR(50)
BEGIN
DECLARE V_STU_ID INT DEFAULT NULL;
DECLARE V_STU_NAME VARCHAR(50) DEFAULT NULL;
SELECT STUDENT_ID INTO V_STU_ID
FROM SCORE
WHERE EXAM_ID=IN_EXAM_ID
ORDER BY POINT DESC
FETCH FIRST 1 ROWS ONLY;
IF (V_STU_ID IS NOT NULL) THEN
SELECT STUDENT_NAME INTO V_STU_NAME
FROM SCORE
WHERE EXAM_ID=IN_EXAM_ID AND STUDENT_ID=V_STU_ID;
END IF;
IF (V_STU_NAME IS NOT NULL) THEN
RETURN V_STU_NAME;
ELSE
RETURN NULL;
END IF;
END

进行如下测试:

values FUNC_BEST(1);

可以得到结果如下:

1
--------------------------------------------------
关云长

DB2函数简单示例的更多相关文章

  1. C++ 回调函数简单示例

    回调函数其实就是以函数指针做函数参数传递给另一个函数,在另一个函数执行的时候可以根据函数指针执行回调函数的代码.简单示例,便于理解,防止遗忘. #include <iostream> ty ...

  2. DB2存储过程简单示例

    在这个示例中,我们将在DB2中创建一个名为DEMO1201的存储过程. 该存储过程的输入参数IN_NAME和IN_CREDITCARD,表示用户的姓名和身份证号. 该存储过程的作用是根据身份证号来新建 ...

  3. Python3基础 内嵌函数 简单示例

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

  4. ABAP分享一 弹出框函数的简单示例

    在开发中经常会使用到弹出框这个功能,在SAP中有很多函数可以实现类似的功能,这里介绍一个比较简单常用的函数  POPUP_TO_CONFIRM 下面是一个实现的简单示例: TABLES sscrfie ...

  5. DB2 函数大全

    DB2函数大全 函数名 函数解释 函数举例 AVG() 返回一组数值的平均值. SELECTAVG(SALARY)FROMBSEMPMS; CORR(),CORRELATION() 返回一对数值的关系 ...

  6. DB2函数大全

    DB2函数大全 函数名 函数解释 函数举例 AVG() 返回一组数值的平均值. SELECTAVG(SALARY)FROMBSEMPMS; CORR(),CORRELATION() 返回一对数值的关系 ...

  7. Linux下的C Socket编程 -- server端的简单示例

    Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...

  8. trait与policy模板应用简单示例

    trait与policy模板应用简单示例 accumtraits.hpp // 累加算法模板的trait // 累加算法模板的trait #ifndef ACCUMTRAITS_HPP #define ...

  9. 为Lua5.3编写C模块简单示例

    为Lua5.3编写C模块简单示例 一.编译安装Lua5.3 MSVC 命令行安装脚本: @echo off md bin md lib md include cd src cl /c /nologo ...

随机推荐

  1. electron中引入jquery

    <!-- Insert this line above script imports --> <script>if (typeof module === 'object') { ...

  2. Python 装饰器实现单列模式

    # 使用装饰器实现单列模式 def singleton(cls): # 用来存在实例的字典 singleton_instance = {} def wrapper(*args, **kwargs): ...

  3. 004_simulink建立子系统

    1. 按照<001_创建simulink>文件内容修改 2. 在选中的位置右键,选择create subsystem selection 3. 得到如图所示 4. 双击subsystem进 ...

  4. Greenplum 常用数据字典

    一.数据库集群信息 1.gp_segment_configration 2.pg_filespace_entry 这两个表是在pg_global表空间下面的,是全局表. 用来查看集群segment信息 ...

  5. 二十三.Subversion基本操作、使用Subversion协同工作、制作nginx的RPM包

    1.Subversion基本操作 web1 1.1 安装Subversion服务器 ]# yum -y install subversion 1.1.1 创建版本库 ]# mkdir /var/svn ...

  6. linux系列(六):rmdir命令

    1.命令格式: rmdir [选项] 目录名 2.命令功能: 该命令从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对父目录的写权限. 3.命令参数: - p 删除指定目录后,若该目录的上层 ...

  7. 2019暑期金华集训 Day5 生成函数

    自闭集训 Day5 生成函数 一般生成函数 无脑地把序列变成多项式: \[ \{a_i\}\rightarrow A(x)=\sum_{n} a_nx^n \] 形式幂级数 生成函数是一种形式幂级数. ...

  8. [ZJOI2004]嗅探器 (割点)

    这题就比较好玩吧水题 以数据范围来看随便怎么做就能过 \(O(n)\)显然我们得过一个割点,其次这个割点得在\(x-y\)中间且不为始终点 其他都好说,在中间:从\(x\)开始遍历,首先得保证\(x- ...

  9. iOS UILabel镂空特效

    http://stackoverflow.com/questions/18716751/drawing-a-path-with-subtracted-text-using-core-graphics ...

  10. 通俗易懂的Redis数据结构基础教程

    Redis有5个基本数据结构,string.list.hash.set和zset.它们是日常开发中使用频率非常高应用最为广泛的数据结构,把这5个数据结构都吃透了,你就掌握了Redis应用知识的一半了. ...