DB2---创建返回结果集的函数
在数据验证中,经常遇到需返回结果集的操作,故整理一个返回结果集的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---创建返回结果集的函数的更多相关文章
- PostgreSQL 调用存储过程返回结果集
创建返回结果集类型的存储过程: CREATE OR REPLACE FUNCTION public.f_get_member_info( id integer, productname charact ...
- oracle pipelined返回值函数 针对数据汇总统计 返回结果集方法
近期需要一个汇总统计,由于数据太多,数据量太大所以在java程序中实现比较困难.若用后台程序统计,数据不能保证实时,同时实现周期比较长.顾使用函数返回结果集的方式,在不增加临时表的情况下实时获取数据. ...
- oracle函数返回结果集
一.用自定义类型实现 1.创建表对象类型. 在Oracle中想要返回表对象,必须自定义一个表类型,如下所示: create or replace type type_table is table of ...
- KingbaseES函数如何返回结果集
函数返回值一般是某一类型值,如int,varchar,date等,返回结果集时就需要用到setof语法. 创建数据 create table class(id number primary key, ...
- postgresql 函数返回结果集(zz)
pgsql function 系列之一:返回结果集--------------------------------------------------------------------------- ...
- Oracle中函数/过程返回结果集的几种方式
原文 Oracle中函数/过程返回结果集的几种方式 Oracle中函数/过程返回结果集的几种方式: 以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过. ...
- oracle调用存储过程和函数返回结果集
在程序开发中,常用到返回结果集的存储过程,这个在mysql和sql server 里比较好处理,直接返回查询结果就可以了,但在oracle里面 要 out 出去,就多了一个步骤,对于不熟悉的兄弟们还得 ...
- Oracle中函数如何返回结果集
在Oracle中,用函数返回结果集有时候要用到,下面是demo: 1 2 3 4 5 6 7 create or replace type t_test as object ( id integer, ...
- oracle创建存储过程并返回结果集(附C#调用代码)
使用存储过程中,最常用的莫过于查询数据表,并返回结果集. 在SQL SERVER 中,这类操作最简单,通过简单的select * from xx 即可完成.但是在Oracle中并不支持这种写法,那么我 ...
- DB2创建function(二)
DB2创建function(一),介绍将function内容作为字段值,或做为一个where条件的情况. DB2创建function(二),介绍返回的内容为一个集合的情况.调用结果集的示例如下: se ...
随机推荐
- Reactor 模式与Tomcat中的Reactor
系列文章目录和关于我 参考:[nio.pdf (oswego.edu)](https://gee.cs.oswego.edu/dl/cpjslides/nio.pdf) 一丶什么是Reactor Th ...
- Java反射源码学习之旅
1 背景 前段时间组内针对"拷贝实例属性是应该用BeanUtils.copyProperties()还是MapStruct"这个问题进行了一次激烈的battle.支持MapStru ...
- PHP代码获取网址参数的数据,请收藏。
<? echo $_SERVER['HTTP_HOST']."<br>"; #localhost echo $_SERVER['PHP_SELF']." ...
- Day01_Java作业
A:选择题 1:下列标识符哪个是合法的(a) A.class B.$abc C.1234 D.Car.taxi B:填空题 1: java源程序的扩展名是( .java ) 2: java程序经编译后 ...
- Java扩展Nginx之七:共享内存
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 作为<Java扩展Nginx>系 ...
- ChatGPT帮助工程师写代码:从功能模块完善到成功执行,实现需求
在软件开发过程中,经常会遇到需要完善功能模块.调试代码和解决问题的情况.为了提高效率,我们可以借助人工智能技术,例如OpenAI的ChatGPT语言模型,来协助我们进行代码编写和调试.本文将介绍一个案 ...
- Swift函数调用方式浅析
函数的调用机制 函数的调用机制是在函数调用时通过那种路径走到最终调用函数地址的机制. 在编程语言中,函数的调用机制有三种 1.静态调用:编译期就确定了函数内存地址,执行效率最高,还可以使用编译器优 ...
- CSRF与SSRF
CSRF与SSRF CSRF(跨站请求伪造) 跨站请求伪造(Cross-site request forgery,CSRF),它强制终端用户在当前对其进行身份 验证后的Web应用程序上执行非本意的操作 ...
- PB从入坑到放弃(五)窗口使用技巧
PB应用程序就是由许多共同协作完成特定任务的窗口组成的集合. 窗口在应用程序的开发工作中占有很大的比重,是非常重要的一个 PB 对象 一.窗口类型 窗口类型 描述 Main ①可以覆盖其他窗口,也可以 ...
- Solon v2.4.0 发布,Java 生态的新星燃起
Solon 是什么开源项目? 一个,Java 新的生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态规模).与其他框架相比,它解决了两个重要的痛点:启动慢 ...