WEB开发网
开发学院数据库DB2 通过DB2 TPC-C基准实现探索SQL(2) 阅读

通过DB2 TPC-C基准实现探索SQL(2)

 2009-12-23 15:00:07 来源:WEB开发网   
核心提示:清单 16. 订单状态函数1CREATE FUNCTION ORD_C_LAST( W_ID INTEGER2 , D_ID SMALLINT3 , C_LAST VARCHAR(16)4 )5RETURNS TABLE( O_ID INTEGER6, O_CARRIER_ID SMALLINT7, O_ENTRY_D

清单 16. 订单状态函数

1
CREATE FUNCTION ORD_C_LAST(  W_ID INTEGER
2               , D_ID SMALLINT
3               , C_LAST VARCHAR(16)
4              )
5
RETURNS TABLE(  O_ID     INTEGER
6        , O_CARRIER_ID SMALLINT
7        , O_ENTRY_D  BIGINT
8        , C_BALANCE  BIGINT
9        , C_FIRST   VARCHAR(16)
10        , C_MIDDLE   CHAR(2)
11        , C_ID     INTEGER
12       )
13
SPECIFIC ORD_C_LAST
14
READS SQL DATA NO EXTERNAL ACTION DETERMINISTIC LANGUAGE SQL
15 VAR:
BEGIN ATOMIC
16
DECLARE C_BALANCE  BIGINT ;
17
DECLARE C_FIRST   VARCHAR(16) ;
18
DECLARE C_MIDDLE   CHAR(2) ;
19
DECLARE C_ID     INTEGER ;
20
DECLARE O_ID     INTEGER;
21
DECLARE O_CARRIER_ID SMALLINT;
22
DECLARE O_ENTRY_D  BIGINT;
23
24  /* Retrieve the Customer information */
25
SET ( C_BALANCE, C_FIRST, C_MIDDLE, C_ID )
26   = (
SELECT C_BALANCE, C_FIRST, C_MIDDLE , C_Id
27
FROM (
SELECT  C_Id
28             , C_BALANCE
29             , C_FIRST
30             , C_MIDDLE
31             , COUNT(*) OVER() AS COUNT
32             , ROWNUMBER() OVER (ORDER BY C_FIRST)
AS NUM
33
FROM CUSTOMER
34
WHERE C_W_ID = ORD_C_LAST.W_Id
35
AND C_D_ID = ORD_C_LAST.D_Id
36
AND C_LAST = ORD_C_LAST.C_LAST
37        )
AS V1
38
WHERE NUM = (COUNT + 1) / 2
39    )
40  ;
41  /* Take advantage of the index to fetch the first row (and hence max(o_id) ) */
42
SET ( O_ID , O_CARRIER_ID , O_ENTRY_D )
43   =  (
SELECT  O_Id
44          , O_CARRIER_Id
45          , O_ENTRY_d
46
FROM ORDERS
47
WHERE O_W_ID = ORD_C_LAST.W_Id
48
AND O_D_ID = ORD_C_LAST.D_Id
49
AND O_C_ID = VAR.C_Id
50
ORDER BY O_Id
DESC
51
FETCH FIRST 1
ROW ONLY
52     )
53  ;
54
RETURN VALUES (  VAR.O_Id
55          , VAR.O_CARRIER_Id
56          , VAR.O_ENTRY_d
57          , VAR.C_BALANCE
58          , VAR.C_FIRST
59          , VAR.C_MIDDLE
60          , VAR.C_Id
61         )
62  ;
63
END

上一页  1 2 3 4 5 6  下一页

Tags:通过 DB TPC

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接