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. python_反射:应用

    class User(object): def denglu(self): print('欢迎来到登录页面!') def zhuce(self): print('欢迎来到注册页面!') def you ...

  2. Oracle递归查询connect by

    一.概述 Oracle中可以通过START WITH . . . CONNECT BY . . .子句来实现SQL的层次查询. 自从Oracle 9i开始,可以通过 SYS_CONNECT_BY_PA ...

  3. aiohttp 支持异步的网络请求模块

    通常在进行网络数据采集时候我们会用到requests,urllib等模块,但是这些模块在使用中并不支持异步,所以今天我们介绍一个支持异步网络请求的模块aiohttp. 首先我们使用flask简单的搭一 ...

  4. Codeforces Round #555 (Div. 3) C1,C2【补题】

    D1:思路:L,R指针移动,每次选最小的即可. #include<bits/stdc++.h> using namespace std; #define int long long #de ...

  5. postgrepSQL psql基础操作

    1.登录postgrepSQL psql 2.退出postgrepSQL \q 3.查看postgrepSQL里面的数据库 1)psql -l 2)\ l 4.切换DB \c db_name 5.查看 ...

  6. Qt--解析Json

    一.QT5 Json简介 QT4中使用第三方库QJson解析JSON文件. QT5新增加了处理JSON的类,类均以QJson开头,包含在QtCore模块中.QT5新增加六个相关类: QJsonArra ...

  7. /etc/sudoers

    Defaults !visiblepw Defaults always_set_home Defaults match_group_by_gid Defaults always_query_group ...

  8. a problem

    给出两个长度为 $n$ 的数组 $a, b$对于任意的 $a_i + b_j$, 求第 $k$ 大 不妨设 $a_i < a_{i + 1}, b_i < b_{i + 1}$ 对于任意的 ...

  9. P1899 魔法物品

    题目描述 //又是一个好(nan)题好(nan)题 //首先,普通物品一开始就卖掉就可以,因为它不会增值 //至于魔法物品 //如果一个魔法物品使用了卷轴后的价值减去买卷轴的钱还不如鉴定前的价值高,那 ...

  10. spring cloud 常见面试题 来理解微服

    为什么要谈 这些理论知识呢   理论知识 = 面试时候的谈资 !!!   你只有 进去公司 才有资格 去做一个码农 ok 话不多说   经历如此漫长的互联网发展  以本人的拙见 软件开发 粗略的 分为 ...