在数据验证中,经常遇到需返回结果集的操作,故整理一个返回结果集的DB2函数,便于后期查阅

1、准备测试表

/*创建测试表:设置结果集的属性为表字段*/
CREATE TABLE Test_EXWASTE_EXC
(
Test_Time TIMESTAMP ,--
Test_STATION CHARACTER(6),--
Test_Three CHARACTER(2) ,--
Test_Four varchar(3) ,--
Test_Five varchar(1) ,--
Test_MODIFY varchar(1) --
)

2、创建返回结果集的函数

/*函数的作用:refpk中以‘,’分隔的信息插入到测试表,并返回结果集*/
--/
create FUNCTION Test_Func_GetInfo(REFPK VARCHAR(500)) --REFPK为传入的参数
returns --返回值的类型为table
TABLE(Out_Time TIMESTAMP,
Out_Station character(6),
Out_Three character(2),
Out_Four SMALLINT,
Out_Five smallint,
Out_Modify character(1))
LANGUAGE SQL
MODIFIES SQL DATA --MODIFIES SQL DATA 表示函数中有ddl操作
begin atomic
DECLARE Out_Time TIMESTAMP;
DECLARE Out_Station character(6);
DECLARE Out_Three character(2);
DECLARE Out_Four SMALLINT;
DECLARE Out_Five smallint;
DECLARE Out_Modify character(1);
DECLARE I_INDEX INT;--
DECLARE I_Length INT;
DECLARE I_Locate INT;
DECLARE V_Char character(1);
DECLARE I_Switch INT;
DECLARE I_Return INT;
DECLARE V_Refpk varchar(500); set I_Return=0;
set I_INDEX=1;
set I_Length=0;
set I_Locate=1;
set I_Switch=0;
set V_Refpk=refpk||',';
set I_Length=length(V_Refpk); set I_Return=1;
while I_INDEX<=I_Length do --将','分隔的信息取出来
set V_Char=substr(V_Refpk,I_INDEX,1);
if V_Char=',' then
set I_Switch=I_Switch+1;
if I_Switch=1 then set Out_Time=timestamp(substr(V_Refpk,I_Locate,I_INDEX-I_Locate));
elseif I_Switch=2 then set Out_Station=substr(V_Refpk,I_Locate,I_INDEX-I_Locate);
elseif I_Switch=3 then set Out_Three=substr(V_Refpk,I_Locate,I_INDEX-I_Locate);
elseif I_Switch=4 then set Out_Four=substr(V_Refpk,I_Locate,I_INDEX-I_Locate);
elseif I_Switch=5 then set Out_Five=substr(V_Refpk,I_Locate,I_INDEX-I_Locate);
else set Out_Modify=substr(V_Refpk,I_Locate,I_INDEX-I_Locate);
end if;
set I_Locate=I_INDEX+1;
end if;
set I_INDEX=I_INDEX+1;
end while;
insert into Test_EXWASTE_EXC values(Out_Time,Out_Station,Out_Three,Out_Four,Out_Five,Out_Modify);
return select * from Test_EXWASTE_EXC ;
end
/

3、函数的调用

由于函数的返回值为table,故我们操作此函数像操作表一样

select T.OUT_TIME from table(Test_Func_GetInfo('2019-06-10 07:30:40,020801,28,154,0,1')) T where T.OUT_TIME=timestamp'2019-06-10 07:30:40'
--注意T的字段是函数中定义的字段,与Test_Exwaste_exc无关

4、关键字MODIFIES SQL DATA删掉,报-374错误

DB2---创建返回结果集的函数的更多相关文章

  1. PostgreSQL 调用存储过程返回结果集

    创建返回结果集类型的存储过程: CREATE OR REPLACE FUNCTION public.f_get_member_info( id integer, productname charact ...

  2. oracle pipelined返回值函数 针对数据汇总统计 返回结果集方法

    近期需要一个汇总统计,由于数据太多,数据量太大所以在java程序中实现比较困难.若用后台程序统计,数据不能保证实时,同时实现周期比较长.顾使用函数返回结果集的方式,在不增加临时表的情况下实时获取数据. ...

  3. oracle函数返回结果集

    一.用自定义类型实现 1.创建表对象类型. 在Oracle中想要返回表对象,必须自定义一个表类型,如下所示: create or replace type type_table is table of ...

  4. KingbaseES函数如何返回结果集

    函数返回值一般是某一类型值,如int,varchar,date等,返回结果集时就需要用到setof语法. 创建数据 create table class(id number primary key, ...

  5. postgresql 函数返回结果集(zz)

    pgsql function 系列之一:返回结果集--------------------------------------------------------------------------- ...

  6. Oracle中函数/过程返回结果集的几种方式

    原文 Oracle中函数/过程返回结果集的几种方式 Oracle中函数/过程返回结果集的几种方式:    以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过.    ...

  7. oracle调用存储过程和函数返回结果集

    在程序开发中,常用到返回结果集的存储过程,这个在mysql和sql server 里比较好处理,直接返回查询结果就可以了,但在oracle里面 要 out 出去,就多了一个步骤,对于不熟悉的兄弟们还得 ...

  8. Oracle中函数如何返回结果集

    在Oracle中,用函数返回结果集有时候要用到,下面是demo: 1 2 3 4 5 6 7 create or replace type t_test as object ( id integer, ...

  9. oracle创建存储过程并返回结果集(附C#调用代码)

    使用存储过程中,最常用的莫过于查询数据表,并返回结果集. 在SQL SERVER 中,这类操作最简单,通过简单的select * from xx 即可完成.但是在Oracle中并不支持这种写法,那么我 ...

  10. DB2创建function(二)

    DB2创建function(一),介绍将function内容作为字段值,或做为一个where条件的情况. DB2创建function(二),介绍返回的内容为一个集合的情况.调用结果集的示例如下: se ...

随机推荐

  1. WPF入门教程系列二十八 ——DataGrid使用示例MVVM模式(5)

    WPF入门教程系列目录 WPF入门教程系列二--Application介绍 WPF入门教程系列三--Application介绍(续) WPF入门教程系列四--Dispatcher介绍 WPF入门教程系 ...

  2. STL-queue(ACM)

    重构函数(默认) queue<int> q; 基本操作 q.front(); // 队列最前面的元素q.back(); // 队列最后面的元素q.size(); // 返回队列长度q.em ...

  3. SLF4J门面日志框架源码探索

    1 SLF4J介绍 SLF4J即Simple Logging Facade for Java,它提供了Java中所有日志框架的简单外观或抽象.因此,它使用户能够使用单个依赖项处理任何日志框架,例如:L ...

  4. 根据模板动态生成word(三)使用poi-tl生成word

    @ 目录 一.前言 1.什么是poi-tl 2.官方信息 2.1 源码仓库 2.2 中文文档 2.3 开源协议 3.poi-tl的优势 3.1 poi-tl和其他模板引擎的对比 3.2 poi-tl ...

  5. 侯捷C++STL源码分析

    STL六大部件 容器(Containers):放东西,需要占用内存. 分配器(Allocators):支持容器. 算法(Algorithms):操作容器里面的数据. 迭代器(Iterators):容器 ...

  6. Nginx TCP 负载均衡:stream 模块配置

    工作上遇到需要用nginx做负载均衡,参考了前同事留下的作业顺利搞定,感觉这块很有意义写篇文档记录. 参考:nginx tcp负载均衡(Stream模块)配置说明 参考:利用nginx进行TCP负载均 ...

  7. Android Studio开发小项目

    "莆仙小馆"--莆田文化展示APP 文化展示程序目的在于应用科学技术助推家乡优秀传统文化的展示与交流.通过图片.视频.音频等展示方式向用户立体地展示一个文化城邦.传统文化与科学技术 ...

  8. 显示Label标签

    1 from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout 2 from PyQt5.QtCore import ...

  9. bash: pip3:未找到命令

    输入以下命令: 1 sudo apt-get install python3-pip 参考链接: https://www.cnblogs.com/banshaohuan/p/10963547.html

  10. 你可得知道物理地址与IP地址

    来看看计算机网络中这些常见的概念你有没有理解~ 物理地址 表示方式 物理地址即mac地址,每个网卡都有6字节的唯一标识,前三个字节表示厂商,后三个字节由厂商随机分配. 如何查看 在 command 中 ...