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語句適用於任何函數,而部分特殊函數的返回值可能只能通過該語句獲取。