DB2函数调用是我们最常用的操作之一,下面就为您详细介绍DB2函数调用的实现方法,供您参考,希望对您能够有所帮助。
用户在DB2中定义函数时如果涉及到了特定的表操作,是无法像系统函数那样进行调用的。这时我们可以使用如下语句查询函数的返回值:
values unction_name(input_paramter_list)
如:
values online( 'user1', date( '2009-5-5'));
如上语句会将返回值构建一个虚表并显示。如果我们要在函数中引用返回值,可以通过如下语句进行查询:
select * from (values online( 'user1', date( '2009-5-5'))) as a;
注意整个values语句作为嵌套查询时被引用的表,因此应该将其括起来,并赋予别名(a)。该语句即可在jdbc或hibernate等数据库操作解决方案中用于函数online(username, time)返回值的查询。
VALUES语句
先看如下语句:
insert into log(uid,operation,logtime)
values
(4,1,CURRENT timestamp),
(4,1,CURRENT timestamp),
(4,0,CURRENT timestamp);
这是常用的insert语句,语句使用values语句获得一个结构与log相同,含有如上三条记录的虚表,并将其插入log表。
再看如下语句:
select * from
(
values
(4,1,CURRENT timestamp),
(4,1,CURRENT timestamp),
(4,0,CURRENT timestamp)
) as log(uid, operation, logtime);
该语句从别名为log的虚表(定义如上)中查询所有记录。也可以不在别名后添加字段别名,这样返回的表会以自增的正整数从左到右标识字段。
以上语句均使用到了values语句。可以看出values语句获取返回值并构建了一个虚表。我们可以通过values实现很多功能(以下不断更新):
0. 将常量、常量组成的列表、变量、返回值等构建为虚表。
如:select * from (values 1,2) as a;
或:select * from (values 1,2) as a(OK) where OK=1;
这是其本身的功能,通过该特性可以获得诸多应用方法见下;
1. select或insert语句的编写(如上);
2. 函数返回值的引用。可见本文开头:DB2函数的调用。values语句适用于任何函数,而部分特殊函数的返回值可能只能通过该语句获取。