DB2函数简单示例
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函数简单示例的更多相关文章
- C++ 回调函数简单示例
回调函数其实就是以函数指针做函数参数传递给另一个函数,在另一个函数执行的时候可以根据函数指针执行回调函数的代码.简单示例,便于理解,防止遗忘. #include <iostream> ty ...
- DB2存储过程简单示例
在这个示例中,我们将在DB2中创建一个名为DEMO1201的存储过程. 该存储过程的输入参数IN_NAME和IN_CREDITCARD,表示用户的姓名和身份证号. 该存储过程的作用是根据身份证号来新建 ...
- Python3基础 内嵌函数 简单示例
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- ABAP分享一 弹出框函数的简单示例
在开发中经常会使用到弹出框这个功能,在SAP中有很多函数可以实现类似的功能,这里介绍一个比较简单常用的函数 POPUP_TO_CONFIRM 下面是一个实现的简单示例: TABLES sscrfie ...
- DB2 函数大全
DB2函数大全 函数名 函数解释 函数举例 AVG() 返回一组数值的平均值. SELECTAVG(SALARY)FROMBSEMPMS; CORR(),CORRELATION() 返回一对数值的关系 ...
- DB2函数大全
DB2函数大全 函数名 函数解释 函数举例 AVG() 返回一组数值的平均值. SELECTAVG(SALARY)FROMBSEMPMS; CORR(),CORRELATION() 返回一对数值的关系 ...
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- trait与policy模板应用简单示例
trait与policy模板应用简单示例 accumtraits.hpp // 累加算法模板的trait // 累加算法模板的trait #ifndef ACCUMTRAITS_HPP #define ...
- 为Lua5.3编写C模块简单示例
为Lua5.3编写C模块简单示例 一.编译安装Lua5.3 MSVC 命令行安装脚本: @echo off md bin md lib md include cd src cl /c /nologo ...
随机推荐
- 4.BeanFactory和ApplicationContext的区别
ApplicationContext和BeanFactory都是用于加载Bean的, 但是二者之间存在区别, ApplicationContext能够提供更多的扩展功能. 1).BeanFactory ...
- git将一个分支的内容替换为另一分支内容
假设我想将我的linux分支内容替换master分支的内容. # 切换到master分支 git checkout master # 再将本地的master分支重置成linux git reset - ...
- 洛谷P1346 电车【最短路】
题目:https://www.luogu.org/problemnew/show/P1346 题意:n个路口,每个路口有好几条轨道,默认指向给出的第一个路口. 如果要换到另外的轨道去需要按一次开关.问 ...
- 010——C#选择文件路径
(一)具体教程查看:011——C#创建ECXEL文件(附教程) (二)代码:foldPath 就是获取到的文件路径 private void button1_Click(object sender, ...
- oracle存储过程把查询到的值更新到别的表
create or replace procedure update_nst_t_Clime2 as cursor c_db is select * from NST_T_FRAME f ,) as ...
- js图片上传 的方法
先规划出框架 <div id="AQA" style="width:300px; height:200px; background-color:aquamarine ...
- Laravel Repository Pattern
Laravel Repository Pattern The Repository Pattern can be very helpful to you in order to keep your ...
- MongoDB 3.2变动一览
3.2测试版本总算release了!E叔带大家来一览MongoDB 3.2版本的真容. (PS:内容比较多,在此仅针对个人认为比较重要的进行讲解,markdown写的,貌似WP的markdown插件有 ...
- DES 加密 转码 脱敏
from pyDes import des, CBC, PAD_PKCS5 import binascii # 秘钥 KEY = 'mHAxsLYz' from pyDes import des, C ...
- Java 【 ArrayList应用 】 (SDUT 4069 C~K的班级)
Java 里面的所有的东西 数组.字符数组.等等,都要 new 新申请. C~K的班级 代码: package test; import java.util.*; public class Main ...