28
0 DB2 Database By Sunny Okoro

IBM DB2 10

Embed Size (px)

Citation preview

Page 1: IBM DB2 10

0

DB2 Database By

Sunny Okoro

Page 2: IBM DB2 10

1

Contents

Database Platform...................................................................................................................................................................... 3

Applications.................................................................................................................................................................................. 3

Sample Database Installation................................................................................................................................................7

Built In Function.................................................................................................................................................................... 11

User Defined Function........................................................................................................................................................... 13

Data Definition.......................................................................................................................................................................... 16

Stored Procedures................................................................................................................................................................... 18

Triggers........................................................................................................................................................................................ 21

Page 3: IBM DB2 10

2

Page 4: IBM DB2 10

3

Database Platform

IBM DB2 EXPRESS EDITION

Applications

DB2

Command Line Processor

Page 5: IBM DB2 10

4

Microsoft Visual Studio 2010 and 2012

Oracle JDeveloper

Page 6: IBM DB2 10

5

IBM Data Studio

Microsoft Visio 2010

Page 7: IBM DB2 10

6

Microsoft Excel and Power Pivot

Page 8: IBM DB2 10

7

Sample Database Installation

Page 9: IBM DB2 10

8

Page 10: IBM DB2 10

9

Page 11: IBM DB2 10

10

Page 12: IBM DB2 10

11

Built In Function

Column functions

SELECT C.CUST_LAST_NAME ,C.CUST_FIRST_NAME,C.CUST_CODE, C.CUST_AGE, C.CUST_CITY,C.CUST_PROV_STATE, CON.ISO_THREE_LETTER_CODE,CON.COUNTRY_EN, SUM(COH.CUST_TOTAL)as Cust_Total,Max(COH.CUST_TOTAL)as Highest_Cust_Total,Min(COH.CUST_TOTAL)as Lowest_Cust_TotalFROMGOSALESCT.CUST_ORDER_HEADER COHINNER JOINGOSALESCT.CUST_CUSTOMER CON COH.CUST_CODE = C.CUST_CODEINNER JOIN GOSALESCT.CUST_COUNTRY CONON CON.COUNTRY_CODE = C.CUST_COUNTRY_CODE GROUP BY C.CUST_LAST_NAME, C.CUST_FIRST_NAME, C.CUST_CODE, C.CUST_AGE, C.CUST_CITY, C.CUST_PROV_STATE, CON.ISO_THREE_LETTER_CODE, CON.COUNTRY_EN

CUST_LAST_NAME

CUST_FIRST_NAME CUST_CODE

CUST_AGE CUST_CITY

CUST_PROV_STATE

ISO_THREE_LETTER_CODE

COUNTRY_EN

CUST_TOTAL

HIGHEST_CUST_TOTAL

LOWEST_CUST_TOTAL

Kennedy Debbie 100136 19 Brisbane Queensland AUS Australia 174.57 98.7 75.87Stedman Helen 100359 25 Brisbane Queensland AUS Australia 907.34 519.73 387.61Durán Grenadda 100656 33 Brisbane Queensland AUS Australia 1072.18 959.14 113.04Salter Zinia 100732 45 Brisbane Queensland AUS Australia 384.75 220.52 164.23Merriman Rodney 100844 31 Brisbane Queensland AUS Australia 869.04 621.61 247.43Jensen Vivian 100967 29 Brisbane Queensland AUS Australia 590.54 299.93 290.61Harriman Trent 101003 19 Brisbane Queensland AUS Australia 1390.99 1321.38 69.61Rolson Ivan 101103 27 Brisbane Queensland AUS Australia 729.15 464.4 264.75

Results Abridged

Scalar function

SELECT C.CUST_LAST_NAME ,C.CUST_FIRST_NAME,C.CUST_CODE, C.CUST_AGE, C.CUST_CITY,C.CUST_PROV_STATE, CON.ISO_THREE_LETTER_CODE,CON.COUNTRY_EN, COH.CUST_ORDER_DATE,VARCHAR_FORMAT(COH.CUST_ORDER_DATE,'YYYY-MM-DD')AS CUST_ORDER_DATE2,date (COH.CUST_ORDER_DATE) as DATE,month (COH.CUST_ORDER_DATE) as MONTH,day (COH.CUST_ORDER_DATE) as DAY,DAYOFWEEK_ISO (COH.CUST_ORDER_DATE) as WEEK,year (COH.CUST_ORDER_DATE) as YEAR,time(COH.CUST_ORDER_DATE)as TIME,hour(COH.CUST_ORDER_DATE) as HOUR,quarter(COH.CUST_ORDER_DATE) as QUARTERFROMGOSALESCT.CUST_ORDER_HEADER COHINNER JOINGOSALESCT.CUST_CUSTOMER CON COH.CUST_CODE = C.CUST_CODEINNER JOIN GOSALESCT.CUST_COUNTRY CONON CON.COUNTRY_CODE = C.CUST_COUNTRY_CODE GROUP BY C.CUST_LAST_NAME, C.CUST_FIRST_NAME, C.CUST_CODE, C.CUST_AGE, C.CUST_CITY, C.CUST_PROV_STATE, CON.ISO_THREE_LETTER_CODE, CON.COUNTRY_EN,COH.CUST_ORDER_DATE

CUST_LAST_NAME CUST_FIRST_NAME CUST_CODE CUST_AGE CUST_CITY CUST_PROV_STATE ISO_THREE_LETTER_CODE COUNTRY_EN CUST_ORDER_DATE CUST_ORDER_DATE2 DATE MONTH DAY WEEK YEAR HOUR QUARTER

Araújo Juliana Sofia 100025 23 Osasco São Paulo BRA Brazil 1/25/2004 8:15 1/25/2004 1/25/2004 1 25 7 2004 8 1

Taveres Ifran Ranulfo 100050 43 Rio de Janeiro Rio de Janeiro BRA Brazil 1/8/2004 16:31 1/8/2004 1/8/2004 1 8 4 2004 16 1

Crépis Telles Bruno Miló 100082 30 Paranaguá Paraná BRA Brazil 1/10/2004 10:10 1/10/2004 1/10/2004 1 10 6 2004 10 1

Sávia Edu 100097 28 Porto Alegre Rio Grande do Sul BRA Brazil 1/17/2004 18:08 1/17/2004 1/17/2004 1 17 6 2004 18 1

Fontes Filipo 100113 44 Navegantes Santa Catarina BRA Brazil 1/21/2004 9:08 1/21/2004 1/21/2004 1 21 3 2004 9 1

Vila Rangel Zizi 100117 42 Salvador Bahia BRA Brazil 1/30/2004 22:52 1/30/2004 1/30/2004 1 30 5 2004 22 1

Cabuçu Stefania 100120 29 Timóteo Minas Gerais BRA Brazil 1/3/2004 8:33 1/3/2004 1/3/2004 1 3 6 2004 8 1

da Gamboa Sandro Reinaldo 100141 26 Navegantes Santa Catarina BRA Brazil 1/1/2004 16:59 1/1/2004 1/1/2004 1 1 4 2004 16 1

Moreira da Estrela Fernanda 100169 24 Porto Alegre Rio Grande do Sul BRA Brazil 1/1/2004 20:15 1/1/2004 1/1/2004 1 1 4 2004 20 1

Page 13: IBM DB2 10

12

Arapuã Ricardo 100232 34 Rio de Janeiro Rio de Janeiro BRA Brazil 1/10/2004 18:02 1/10/2004 1/10/2004 1 10 6 2004 18 1

Result Abridged

SELECT UPPER (C.CUST_LAST_NAME)AS CUST_LAST_NAME , LOWER (C.CUST_FIRST_NAME) AS CUST_FIRST_NAME,C.CUST_CODE, C.CUST_AGE, C.CUST_CITY CONCAT ',' CONCAT C.CUST_PROV_STATE CONCAT ',' CONCAT CON.COUNTRY_EN AS CUST_LOCATION, COH.CUST_ORDER_DATE,VARCHAR_FORMAT(COH.CUST_ORDER_DATE,'YYYY-MM-DD')AS CUST_ORDER_DATE2,date (COH.CUST_ORDER_DATE) as DATE,month (COH.CUST_ORDER_DATE) as MONTH,day (COH.CUST_ORDER_DATE) as DAY,DAYOFWEEK_ISO (COH.CUST_ORDER_DATE) as WEEK,year (COH.CUST_ORDER_DATE) as YEAR,time(COH.CUST_ORDER_DATE)as TIME,hour(COH.CUST_ORDER_DATE) as HOUR,quarter(COH.CUST_ORDER_DATE) as QUARTER,VARCHAR_FORMAT(COH.CUST_ORDER_DATE,'Day-dd-Month-YYYY')AS CUST_ORDER_DATE3FROMGOSALESCT.CUST_ORDER_HEADER COHINNER JOINGOSALESCT.CUST_CUSTOMER CON COH.CUST_CODE = C.CUST_CODEINNER JOIN GOSALESCT.CUST_COUNTRY CONON CON.COUNTRY_CODE = C.CUST_COUNTRY_CODE WHERE C.CUST_CITY CONCAT ',' CONCAT C.CUST_PROV_STATE CONCAT ',' CONCAT CON.COUNTRY_EN IS NOT NULLGROUP BY C.CUST_LAST_NAME, C.CUST_FIRST_NAME, C.CUST_CODE, C.CUST_AGE, C.CUST_CITY, C.CUST_PROV_STATE, CON.ISO_THREE_LETTER_CODE, CON.COUNTRY_EN,COH.CUST_ORDER_DATE

Result Abridged

CUST_LAST_NAME CUST_FIRST_NAME CUST_CODE CUST_AGE CUST_LOCATION CUST_ORDER_DATE CUST_ORDER_DATE2 DATE MONTH DAY WEEK YEAR HOUR QUARTER

CUST_ORDER_DATE3

RYAN mat 118394 17 Anchorage,Alaska,United States 3/2/2006 16:12 3/2/2006 3/2/2006 3 2 4 2006 16 1 Thursday-02-March-2006

EISEN ernst 106515 17 Apeldoorn,Gelderland,Netherlands 11/15/2007 15:04 11/15/2007 11/15/2007 11 15 4 2007 15 4 Thursday-15-November-2007

EISEN ernst 106515 17 Apeldoorn,Gelderland,Netherlands 11/24/2004 4:23 11/24/2004 11/24/2004 11 24 3 2004 4 4 Wednesday-24-November-2004

MIKHAILOV georgiy 130664 17 Astrakhan,Astrakhan Oblast,Russia 4/30/2007 16:25 4/30/2007 4/30/2007 4 30 1 2007 16 2 Monday-30-April-2007

KRIEGER holger 126830 17 Augsburg,Bavaria,Germany 11/26/2006 6:18 11/26/2006 11/26/2006 11 26 7 2006 6 4 Sunday-26-November-2006

GONA kelmo jabuti 125044 17 Balneário Camboriú,Santa Catarina,Brazil

9/1/2006 18:28 9/1/2006 9/1/2006 9 1 5 2006 18 3 Friday-01-September-2006

BÄCKER karsten 127161 17 Bern,Bern,Switzerland 12/13/2006 0:05 12/13/2006 12/13/2006 12 13 3 2006 0 4 Wednesday-13-December-2006

Page 14: IBM DB2 10

13

User Defined Function

create function GOSALESCT.CUST_AGE(CUSTCODE INTEGER)RETURNS INTEGERNOT DETERMINISTIC LANGUAGE SQL CALLED ON NULL INPUTRETURN SELECT CUST_AGE FROM GOSALESCT.CUST_CUSTOMER WHERE CUST_CODE = CUSTCODE

SELECT CUST_CODE, CUST_FIRST_NAME, CUST_LAST_NAME,CUST_AGE(CUST_CODE) AS CUST_AGEFROM GOSALESCT.CUST_CUSTOMER WHERE CUST_CODE = CUST_CODE

CUST_CODE CUST_FIRST_NAME CUST_LAST_NAME CUST_AGE--------- ---------------- -------------------- --------126887 Victor Hernández 31119428 Cuilan Dong 60119433 Taisia Ladislavova 22119434 Jianhua Pang 42119469 Edward Afinogenov 52

Result Abridged

create function GOSALESCT.CUST_NAME(CUSTCODE INTEGER)RETURNS VARCHAR(200)NOT DETERMINISTIC LANGUAGE SQL CALLED ON NULL INPUTRETURN SELECT CUST_FIRST_NAME CONCAT ',' CONCAT CUST_LAST_NAME FROM GOSALESCT.CUST_CUSTOMER WHERE CUST_CODE = CUSTCODE

SELECT COH.CUST_CODE , CUST_NAME(CUST_CODE)AS CUST_NAME,VARCHAR_FORMAT(COH.CUST_ORDER_DATE,'Day-dd-Month-YYYY')AS CUST_ORDER_DATE,COH.CUST_ORDER_NUMBER, COH.CUST_TOTAL, COH.CUST_SALES_TAX,COH.CUST_TOTAL_QUANTITY,PNL.PRODUCT_NAMEFROM GOSALESCT.CUST_ORDER_HEADER COHINNER JOINGOSALESCT.CUST_ORDER_DETAIL CODON COH.CUST_ORDER_NUMBER = COD.CUST_ORDER_NUMBERINNER JOIN GOSALES.PRODUCT_NAME_LOOKUP PNLONPNL.PRODUCT_NUMBER = COD.PRODUCT_NUMBERWHERE CUST_CODE = CUST_CODEAND PNL.PRODUCT_LANGUAGE ='EN'

CUST_CODE CUST_NAME CUST_ORDER_DATE CUST_ORDER_NUMBER CUST_TOTAL CUST_SALES_TAX CUST_TOTAL_QUANTITY PRODUCT_NAME --------- -------------------------------------- --------------------------- ----------------- ---------- -------------- ------------------- --------------------------------- 118250 Gil,Conselheiro Friday-31-March-2006 147965 881.74 166.33 2 Hibernator Lite 118862 Annett,Jaeger Saturday-29-April-2006 149549 165.44 22.82 1 Venue 120229 Gang,Dong Thursday-20-April-2006 153087 934.44 44.50 4 Canyon Mule Carryall 120229 Gang,Dong Thursday-20-April-2006 153087 934.44 44.50 4 Hibernator 120690 James,Morton Sunday-28-May-2006 154275 163.37 21.31 2 TrailChef Single Flame 120690 James,Morton Sunday-28-May-2006 154275 163.37 21.31 2 TrailChef Kitchen Kit 123917 Elena,Bolton Saturday-22-July-2006 162633 300.24 41.41 1 Opera Vision 126480 Charles,Lanford Thursday-23-November-2006 169300 25.53 2.32 1 Single Edge

Result Abridged

Page 15: IBM DB2 10

14

SELECT COH.CUST_CODE , CUST_NAME(CUST_CODE)AS CUST_NAME,CUST_AGE(CUST_CODE)AS CUST_AGE,VARCHAR_FORMAT(COH.CUST_ORDER_DATE,'Day-dd-Month-YYYY')AS CUST_ORDER_DATE,COH.CUST_ORDER_NUMBER, COH.CUST_TOTAL, COH.CUST_SALES_TAX,COH.CUST_TOTAL_QUANTITY,PNL.PRODUCT_NAMEFROM GOSALESCT.CUST_ORDER_HEADER COHINNER JOINGOSALESCT.CUST_ORDER_DETAIL CODON COH.CUST_ORDER_NUMBER = COD.CUST_ORDER_NUMBERINNER JOIN GOSALES.PRODUCT_NAME_LOOKUP PNLONPNL.PRODUCT_NUMBER = COD.PRODUCT_NUMBERWHERE CUST_CODE = CUST_CODEAND PNL.PRODUCT_LANGUAGE ='EN'

CUST_CODE CUST_NAME CUST_AGE CUST_ORDER_DATE CUST_ORDER_NUMBER CUST_TOTAL CUST_SALES_TAX CUST_TOTAL_QUANTITY PRODUCT_NAME --------- ------------------------------------ -------- --------------------------- ----------------- ---------- -------------- ------------------- --------------------------------- 102919 Bob,Bass 29 Sunday-10-June-2007 189092 648.24 27.91 2 Star Lite 102919 Bob,Bass 29 Sunday-10-June-2007 189092 648.24 27.91 2 Hibernator Lite 107086 Linus,Hedberg 47 Wednesday-01-December-2004 118797 1069.61 41.14 3 TrailChef Kitchen Kit 107086 Linus,Hedberg 47 Wednesday-01-December-2004 118797 1069.61 41.14 3 Canyon Mule Extreme Backpack 107086 Linus,Hedberg 47 Wednesday-01-December-2004 118797 1069.61 41.14 3 Hawk Eye 123731 Jenny,Andersson 34 Monday-10-July-2006 162173 2603.30 520.66 1 Hailstorm Titanium Irons 118873 Mary,Honeycutt 56 Tuesday-25-April-2006 149579 189.90 14.47 1 Seeker 50 125520 Amir,Kumar 44 Saturday-23-September-2006 166790 2266.29 251.81 8 Husky Harness Extreme 125520 Amir,Kumar 44 Saturday-23-September-2006 166790 2266.29 251.81 8 Hibernator Pillow 125520 Amir,Kumar 44 Saturday-23-September-2006 166790 2266.29 251.81 8 Husky Rope 100 125520 Amir,Kumar 44 Saturday-23-September-2006 166790 2266.29 251.81 8 Hibernator Lite 125520 Amir,Kumar 44 Saturday-23-September-2006 166790 2266.29 251.81 8 Hibernator 125520 Amir,Kumar 44 Saturday-23-September-2006 166790 2266.29 251.81 8 Hibernator Extreme 111197 Ralph,Hunter 43 Tuesday-24-May-2005 129627 171.52 0.00 2 Canyon Mule Carryall

Result Abridged

CREATE FUNCTION ORDER_REC() RETURNS TABLE(CUST_CODE INTEGER, CUST_FIRST_NAME VARCHAR(90), CUST_LAST_NAME VARCHAR(90), CUST_ORDER_DATE VARCHAR(55), CUST_ORDER_NUMBER INTEGER, CUST_SALES_TAX DECIMAL, CUST_SHIP_COST DECIMAL, CUST_SUB_TOTAL DECIMAL, TOTAL_QUANTITY BIGINT ) NOT DETERMINISTIC LANGUAGE SQL CALLED ON NULL INPUT RETURN SELECT C.CUST_CODE, C.CUST_FIRST_NAME, C.CUST_LAST_NAME, VARCHAR_FORMAT(COH.CUST_ORDER_DATE,'Day-dd-Month-YYYY')AS CUST_ORDER_DATE, COH.CUST_ORDER_NUMBER, COH.CUST_SALES_TAX, COH.CUST_SHIP_COST, COH.CUST_SUBTOTAL, COH.CUST_TOTAL_QUANTITY FROM GOSALESCT.CUST_CUSTOMER C INNER JOIN GOSALESCT.CUST_ORDER_HEADER COH ON COH.CUST_CODE =C.CUST_CODE;

SELECT * FROM TABLE(ORDER_REC())AS CUST_REC;

CUST_CODE CUST_FIRST_NAME CUST_LAST_NAME CUST_ORDER_DATE CUST_ORDER_NUMBER CUST_SALES_TAX CUST_SHIP_COST CUST_SUB_TOTAL TOTAL_QUANTITY --------- ----------------- -------------------- --------------------------- ----------------- -------------- -------------- -------------- -------------- 126909 Ayaka Miyamura Tuesday-21-November-2006 170389 11 8 68 1 126920 Vikentiy Prokofiyov Friday-01-December-2006 170420 222 12 1223 5 126941 Edith Lapointe Sunday-19-November-2006 170478 76 5 504 1 126986 Jeffrey Hall Wednesday-22-November-2006 170599 21 8 173 2 127080 Enrico Vanni Wednesday-06-December-2006 170842 25 8 123 1 127206 Massimo Ripetto Thursday-14-December-2006 171177 516 19 2564 3 127288 Meghan Clay Thursday-21-December-2006 171381 4 5 34 1

Result Abridged

CREATE FUNCTION ORDER_REC2(@CUSTID INTEGER) RETURNS TABLE(CUST_CODE INTEGER, CUST_FIRST_NAME VARCHAR(90), CUST_LAST_NAME VARCHAR(90), CUST_ORDER_DATE VARCHAR(55), CUST_ORDER_NUMBER INTEGER, CUST_SALES_TAX DECIMAL, CUST_SHIP_COST DECIMAL, CUST_SUB_TOTAL DECIMAL, TOTAL_QUANTITY BIGINT ) NOT DETERMINISTIC LANGUAGE SQL RETURN SELECT C.CUST_CODE, C.CUST_FIRST_NAME, C.CUST_LAST_NAME, VARCHAR_FORMAT(COH.CUST_ORDER_DATE,'Day-dd-Month-YYYY')AS CUST_ORDER_DATE, COH.CUST_ORDER_NUMBER, COH.CUST_SALES_TAX, COH.CUST_SHIP_COST, COH.CUST_SUBTOTAL, COH.CUST_TOTAL_QUANTITY FROM GOSALESCT.CUST_CUSTOMER C INNER JOIN GOSALESCT.CUST_ORDER_HEADER COH

Page 16: IBM DB2 10

15

ON COH.CUST_CODE =C.CUST_CODE WHERE C.CUST_CODE = @CUSTID;

SELECT * FROM TABLE(ORDER_REC2(126906))AS CUST_REC;

CUST_CODE CUST_FIRST_NAME CUST_LAST_NAME CUST_ORDER_DATE CUST_ORDER_NUMBER CUST_SALES_TAX CUST_SHIP_COST CUST_SUB_TOTAL TOTAL_QUANTITY --------- --------------- -------------- ------------------------- ----------------- -------------- -------------- -------------- -------------- 126906 Nick Dunphy Thursday-09-November-2006 170381 10 8 179 1

Lists of functions created as viewed in Microsoft Visual Studio 2010

Page 17: IBM DB2 10

16

Data Definition

CREATE TABLE GOSALESCT.CUST_ORDER_REC ( REC_ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 0903 INCREMENT BY 20), cust_code INTEGER NOT NULL, cust_name VARCHAR(220), cust_order_number INTEGER NOT NULL, order_date VARCHAR(80), cust_sales_tax DECIMAL(19,2), cust_ship_cost DECIMAL(19,2), cust_subtotal DECIMAL(19,2), cust_total DECIMAL(19,2), cust_total_quantity INTEGER, crdt_method_code INTEGER, card_expdate VARCHAR(50), cust_cc_id INTEGER, product_number INTEGER, product_name varchar(240) );

CREATE TABLE GOSALESCT.CUST_ORDER_ADUIT ( REC_ID INTEGER, cust_code INTEGER , cust_name VARCHAR(220), cust_order_number INTEGER , order_date VARCHAR(80), cust_sales_tax DECIMAL(19,2), cust_ship_cost DECIMAL(19,2), cust_subtotal DECIMAL(19,2), cust_total DECIMAL(19,2), cust_total_quantity INTEGER, crdt_method_code INTEGER, card_expdate VARCHAR(50), cust_cc_id INTEGER, product_number INTEGER, product_name varchar(240), AUDIT_ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 0903 INCREMENT BY 20), ACTION_TYPE CHAR(40), ACTION_DATE TIMESTAMP DEFAULT CURRENT TIMESTAMP );

CREATE VIEW GOSALESCT.SALES_VW AS SELECT COH.CUST_CODE, CUST.CUST_FIRST_NAME CONCAT ','CONCAT CUST.CUST_LAST_NAME AS Cust_Name,

COH.CUST_ORDER_NUMBER ,VARCHAR_FORMAT(COH.CUST_ORDER_DATE,'Day-dd-Month-YYYY')AS Order_Date,COH.CUST_SALES_TAX as Sales_Tax, COH.CUST_SHIP_COST, COH.CUST_SUBTOTAL,COH.CUST_TOTAL, COH.CUST_TOTAL_QUANTITY,CRTCD.CRDT_METHOD_CODE , VARCHAR_FORMAT(CRTCD.CUST_CC_EXP_DATE, 'Day-dd-Month-YYYY')AS Card_ExpDate,CRTCD.cust_cc_id,PRD.PRODUCT_NUMBER,PRD.product_NAME

FROM GOSALESCT.CUST_CUSTOMER CUST INNER JOIN GOSALESCT.CUST_ORDER_HEADER COHON CUST.CUST_CODE = COH.CUST_CODEINNER JOIN GOSALESCT.CUST_CRDT_CARD CRTCDON CUST.CUST_CODE = CRTCD.CUST_CODEINNER JOIN GOSALESCT.CUST_ORDER_DETAIL CODON COD.CUST_ORDER_NUMBER = COH.CUST_ORDER_NUMBERINNER JOIN GOSALES.PRODUCT_NAME_LOOKUP PRDON COD.PRODUCT_NUMBER = PRD.PRODUCT_NUMBERWHERE PRD.PRODUCT_LANGUAGE ='EN'

Page 18: IBM DB2 10

17

SELECT * FROM GOSALESCT.SALES_VW FETCH FIRST 15 ROWS ONLY;

CUST_CODE

CUST_NAME CUST_ORDER_NUMBER ORDER_DATE SALES_TAX CUST_SHIP_COST CUST_SUBTOTAL

CUST_TOTAL CUST_TOTAL_QUANTITY

CRDT_METHOD_CODE

CARD_EXPDATE CUST_CC_ID PRODUCT_NUMBER PRODUCT_NAME

131090 Sonya,Widerberg 100039 Wednesday-14-January-2004

43.03 6.92 165.18 215.12 2 28 Wednesday-01-December-2010

10017 87110 BugShield Spray

131090 Sonya,Widerberg 100039 Wednesday-14-January-2004

43.03 6.92 165.18 215.12 2 28 Wednesday-01-December-2010

10017 78110 Seeker 35

131156 Wei,Xi 100201 Thursday-29-January-2004 14.24 5.87 77.89 98 1 29 Sunday-01-May-2011 10081 143150 Trendi131168 Elena,Nilina 100227 Saturday-24-January-2004 15.8 5.87 81.9 103.57 1 29 Friday-01-January-2010 10092 136150 Sam131210 Achim,Bergmann 100329 Friday-02-January-2004 503.9 9.84 2509.66 3023.4 2 29 Monday-01-July-2013 10134 110110 Blue Steel Putter131210 Achim,Bergmann 100329 Friday-02-January-2004 503.9 9.84 2509.66 3023.4 2 29 Monday-01-July-2013 10134 106110 Hailstorm Steel Woods Set100008 Alphonse,Bobert 100463 Thursday-22-January-2004 1.76 7.94 27.17 36.87 1 28 Tuesday-01-May-2012 10187 9110 TrailChef Kettle100026 Bryce,Denver 100507 Thursday-01-January-2004 56.51 13.97 551.13 621.61 1 25 Saturday-01-December-2012 10205 44110 Husky Rope 100100062 Yi,Dong 100602 Sunday-18-January-2004 8.06 5.87 155.38 169.31 1 28 Thursday-01-July-2010 10240 68120 Polar Sun100142 Ruben,Raisaov 100801 Thursday-01-January-2004 434.73 9.84 2405.34 2849.91 2 25 Tuesday-01-December-2009 10317 106110 Hailstorm Steel Woods Set100142 Ruben,Raisaov 100801 Thursday-01-January-2004 434.73 9.84 2405.34 2849.91 2 25 Tuesday-01-December-2009 10317 109110 Course Pro Putter100160 Kan,Shang 100846 Friday-30-January-2004 675.42 13.29 3959.76 4648.47 4 29 Friday-01-March-2013 10335 101110 Hailstorm Steel Irons100160 Kan,Shang 100846 Friday-30-January-2004 675.42 13.29 3959.76 4648.47 4 29 Friday-01-March-2013 10335 106110 Hailstorm Steel Woods Set100160 Kan,Shang 100846 Friday-30-January-2004 675.42 13.29 3959.76 4648.47 4 29 Friday-01-March-2013 10335 109110 Course Pro Putter100160 Kan,Shang 100846 Friday-30-January-2004 675.42 13.29 3959.76 4648.47 4 29 Friday-01-March-2013 10335 111110 Blue Steel Max Putter

Page 19: IBM DB2 10

18

Stored Procedures

CREATE PROCEDURE GOSALESCT.Order_Rec() LANGUAGE SQL

DYNAMIC RESULT SETS 1READS SQL DATANOT DETERMINISTIC CALLED ON NULL INPUT

BEGIN DECLARE CUSTORDER CURSOR WITH RETURN FOR SELECT COH.CUST_CODE, CUST.CUST_FIRST_NAME CONCAT ','CONCAT CUST.CUST_LAST_NAME AS Cust_Name,

COH.CUST_ORDER_NUMBER ,VARCHAR_FORMAT(COH.CUST_ORDER_DATE,'Day-dd-Month-YYYY')AS Order_Date,COH.CUST_SALES_TAX as Sales_Tax, COH.CUST_SHIP_COST, COH.CUST_SUBTOTAL,COH.CUST_TOTAL, COH.CUST_TOTAL_QUANTITY,CRTCD.CRDT_METHOD_CODE , VARCHAR_FORMAT(CRTCD.CUST_CC_EXP_DATE, 'Day-dd-Month-YYYY')AS Card_ExpDate,CRTCD.cust_cc_id,PRD.PRODUCT_NUMBER,PRD.product_NAME

FROM GOSALESCT.CUST_CUSTOMER CUST INNER JOIN GOSALESCT.CUST_ORDER_HEADER COHON CUST.CUST_CODE = COH.CUST_CODEINNER JOIN GOSALESCT.CUST_CRDT_CARD CRTCDON CUST.CUST_CODE = CRTCD.CUST_CODEINNER JOIN GOSALESCT.CUST_ORDER_DETAIL CODON COD.CUST_ORDER_NUMBER = COH.CUST_ORDER_NUMBERINNER JOIN GOSALES.PRODUCT_NAME_LOOKUP PRDON COD.PRODUCT_NUMBER = PRD.PRODUCT_NUMBERWHERE PRD.PRODUCT_LANGUAGE ='EN';

OPEN CUSTORDER;END

CUST_CODE CUST_NAME CUST_ORDER_NUMBER ORDER_DATE SALES_TAX CUST_SHIP_COST CUST_SUBTOTAL CUST_TOTAL CUST_TOTAL_QUANTITY CRDT_METHOD_CODE CARD_EXPDATE CUST_CC_ID PRODUCT_NUMBER PRODUCT_NAME --------- ------------------------------------ ----------------- -------------------------- --------- -------------- ------------- ---------- ------------------- ---------------- --------------------------- ---------- -------------- --------------------------------- 131090 Sonya,Widerberg 100039 Wednesday-14-January-2004 43.03 6.92 165.18 215.12 2 28 Wednesday-01-December-2010 10017 87110 BugShield Spray 131090 Sonya,Widerberg 100039 Wednesday-14-January-2004 43.03 6.92 165.18 215.12 2 28 Wednesday-01-December-2010 10017 78110 Seeker 35 131156 Wei,Xi 100201 Thursday-29-January-2004 14.24 5.87 77.89 98.00 1 29 Sunday-01-May-2011 10081 143150 Trendi 131168 Elena,Nilina 100227 Saturday-24-January-2004 15.80 5.87 81.90 103.57 1 29 Friday-01-January-2010 10092 136150 Sam 131210 Achim,Bergmann 100329 Friday-02-January-2004 503.90 9.84 2509.66 3023.40 2 29 Monday-01-July-2013 10134 110110 Blue

Steel Putter

Result Abridged

CREATE PROCEDURE GOSALESCT.Order_Rec3( IN @CUSTID INTEGER) LANGUAGE SQL

DYNAMIC RESULT SETS 1READS SQL DATANOT DETERMINISTIC

BEGIN DECLARE CUSTORDER CURSOR WITH RETURN FOR SELECT COH.CUST_CODE, CUST.CUST_FIRST_NAME CONCAT ','CONCAT CUST.CUST_LAST_NAME AS Cust_Name,

COH.CUST_ORDER_NUMBER ,VARCHAR_FORMAT(COH.CUST_ORDER_DATE,'Day-dd-Month-YYYY')AS Order_Date,COH.CUST_SALES_TAX as Sales_Tax, COH.CUST_SHIP_COST, COH.CUST_SUBTOTAL,COH.CUST_TOTAL, COH.CUST_TOTAL_QUANTITY,CRTCD.CRDT_METHOD_CODE , VARCHAR_FORMAT(CRTCD.CUST_CC_EXP_DATE, 'Day-dd-Month-YYYY')AS Card_ExpDate,CRTCD.cust_cc_id,PRD.PRODUCT_NUMBER,PRD.product_NAME

FROM GOSALESCT.CUST_CUSTOMER CUST INNER JOIN GOSALESCT.CUST_ORDER_HEADER COHON CUST.CUST_CODE = COH.CUST_CODEINNER JOIN GOSALESCT.CUST_CRDT_CARD CRTCDON CUST.CUST_CODE = CRTCD.CUST_CODEINNER JOIN GOSALESCT.CUST_ORDER_DETAIL CODON COD.CUST_ORDER_NUMBER = COH.CUST_ORDER_NUMBERINNER JOIN GOSALES.PRODUCT_NAME_LOOKUP PRDON COD.PRODUCT_NUMBER = PRD.PRODUCT_NUMBERWHERE PRD.PRODUCT_LANGUAGE ='EN'AND CUST.CUST_CODE = @CUSTID;

OPEN CUSTORDER;END

CUST_CODE CUST_NAME CUST_ORDER_NUMBER ORDER_DATE SALES_TAX CUST_SHIP_COST CUST_SUBTOTAL CUST_TOTAL CUST_TOTAL_QUANTITY CRDT_METHOD_CODE CARD_EXPDATE CUST_CC_ID PRODUCT_NUMBER PRODUCT_NAME --------- ------------ ----------------- ------------------------- --------- -------------- ------------- ---------- ------------------- ---------------- ------------------------- ---------- -------------- ---------------------- 131100 Zinia,Jarvis 100063 Wednesday-07-January-2004 2.68 5.57 35.70 43.95 1 28 Tuesday-01-September-2009 10026 124130 Cat Eye 131100 Zinia,Jarvis 181181 Tuesday-24-April-2007 21.09 9.53 314.93 345.55 2 28 Tuesday-01-September-2009 10026 8110 TrailChef Double Flame 131100 Zinia,Jarvis 181181 Tuesday-24-April-2007 21.09 9.53 314.93 345.55 2 28 Tuesday-01-September-2009 10026 9110 TrailChef Kettle

Table Population

CREATE PROCEDURE GOSALESCT.Order_Rec4( IN @CUSTID INTEGER) LANGUAGE SQL

DYNAMIC RESULT SETS 1MODIFIES SQL DATANOT DETERMINISTIC

Page 20: IBM DB2 10

19

BEGIN ATOMIC INSERT INTO GOSALESCT.CUST_ORDER_REC(cust_code,cust_name,cust_order_number,order_date,cust_sales_tax,cust_ship_cost,cust_subtotal,cust_total,cust_total_quantity,crdt_method_code,card_expdate,cust_cc_id,product_number,product_name)

SELECT COH.CUST_CODE, CUST.CUST_FIRST_NAME CONCAT ','CONCAT CUST.CUST_LAST_NAME AS Cust_Name,COH.CUST_ORDER_NUMBER ,VARCHAR_FORMAT(COH.CUST_ORDER_DATE,'Day-dd-Month-YYYY')AS Order_Date,COH.CUST_SALES_TAX as Sales_Tax, COH.CUST_SHIP_COST, COH.CUST_SUBTOTAL,COH.CUST_TOTAL, COH.CUST_TOTAL_QUANTITY,CRTCD.CRDT_METHOD_CODE , VARCHAR_FORMAT(CRTCD.CUST_CC_EXP_DATE, 'Day-dd-Month-YYYY')AS Card_ExpDate,CRTCD.cust_cc_id,PRD.PRODUCT_NUMBER,PRD.product_NAME

FROM GOSALESCT.CUST_CUSTOMER CUST INNER JOIN GOSALESCT.CUST_ORDER_HEADER COHON CUST.CUST_CODE = COH.CUST_CODEINNER JOIN GOSALESCT.CUST_CRDT_CARD CRTCDON CUST.CUST_CODE = CRTCD.CUST_CODEINNER JOIN GOSALESCT.CUST_ORDER_DETAIL CODON COD.CUST_ORDER_NUMBER = COH.CUST_ORDER_NUMBERINNER JOIN GOSALES.PRODUCT_NAME_LOOKUP PRDON COD.PRODUCT_NUMBER = PRD.PRODUCT_NUMBERWHERE PRD.PRODUCT_LANGUAGE ='EN'AND CUST.CUST_CODE = @CUSTID;

END

CALL Order_Rec4(100117); SELECT * FROM GOSALESCT.CUST_ORDER_REC;

REC_ID CUST_CODE

CUST_NAME CUST_ORDER_NUMBER

ORDER_DATE CUST_SALES_TAX

CUST_SHIP_COST

CUST_SUBTOTAL CUST_TOTAL CUST_TOTAL_QUANTITY CRDT_METHOD_CODE CARD_EXPDATE CUST_CC_ID PRODUCT_NUMBER PRODUCT_NAME

903 100117 Zizi,Vila Rangel 100738 Friday-30-January-2004 23.36 9.16 102.09 134.61 2 25 Thursday-01-March-2012 10292 28110 Canyon Mule Cooler

923 100117 Zizi,Vila Rangel 100738 Friday-30-January-2004 23.36 9.16 102.09 134.61 2 25 Thursday-01-March-2012 10292 3110 TrailChef Kitchen Kit

943 100117 Zizi,Vila Rangel 181893 Sunday-01-April-2007 4.61 7.33 14.61 26.55 1 25 Thursday-01-March-2012 10292 1110 TrailChef Water Bag

CREATE PROCEDURE GOSALESCT.Order_Rec_update( IN @CUSTID INTEGER, IN @PRODID INTEGER, IN @SALTX DECIMAL(19,2) ) LANGUAGE SQL

DYNAMIC RESULT SETS 1MODIFIES SQL DATANOT DETERMINISTIC

BEGIN ATOMIC UPDATE GOSALESCT.CUST_ORDER_REC SET cust_sales_tax = @SALTX WHERE cust_code= @CUSTID AND product_number = @PRODID;END

CALL GOSALESCT.Order_Rec_update(100117,28110,25);

REC_ID

CUST_CODE

CUST_NAME

CUST_ORDER_NUMBER

ORDER_DATE

CUST_SALES_TAX

CUST_SHIP_COST

CUST_SUBTOTAL

CUST_TOTAL

CUST_TOTAL_QUANTITY

CRDT_METHOD_CODE

CARD_EXPDATE

CUST_CC_ID

PRODUCT_NUMBER

PRODUCT_NAME

903

100117

Zizi,Vila Rangel

100738

Friday-30-January-2004

25 9.16 102.09

134.61

2 25 Thursday-01-March-2012

10292

28110

Canyon Mule Cooler

923

100117

Zizi,Vila Rangel

100738

Friday-30-January-2004

23.36

9.16 102.09

134.61

2 25 Thursday-01-March-2012

10292

3110 TrailChef Kitchen Kit

943

100117

Zizi,Vila Rangel

181893

Sunday-01-April-2007

4.61 7.33 14.61

26.55

1 25 Thursday-01-March-2012

10292

1110 TrailChef Water Bag

Page 21: IBM DB2 10

20

Since the Rec_ID was not used in the procedure. The stored procedure could update multiple rows since a customer may purchase a product multiple times. To avoid this problem, the following delete procedure and update procedure 2 has to include the Rec_ID

create PROCEDURE GOSALESCT.Order_Rec_delete( IN @CUSTID INTEGER, IN @PRODID INTEGER, IN @RECID INTEGER ) LANGUAGE SQL

DYNAMIC RESULT SETS 1MODIFIES SQL DATANOT DETERMINISTIC CALLED ON NULL INPUT

BEGIN ATOMIC delete GOSALESCT.CUST_ORDER_REC WHERE cust_code= @CUSTID AND product_number = @PRODID AND REC_ID = @RECID;END

create PROCEDURE GOSALESCT.Order_Rec_update2( IN @CUSTID INTEGER, IN @PRODID INTEGER, IN @RECID INTEGER, IN @TX DECIMAL(19,2) ) LANGUAGE SQL

DYNAMIC RESULT SETS 1MODIFIES SQL DATANOT DETERMINISTIC CALLED ON NULL INPUT

BEGIN ATOMIC update GOSALESCT.CUST_ORDER_REC set cust_sales_tax =@TX WHERE cust_code= @CUSTID AND product_number = @PRODID AND REC_ID = @RECID;END

CALL GOSALESCT.Order_Rec_delete(100117, 1110,943);

CALL GOSALESCT.Order_Rec_update2(100117,3110, 923,45);

SELECT * FROM GOSALESCT.CUST_ORDER_REC;

REC_ID

CUST_CODE

CUST_NAME CUST_ORDER_NUMBER

ORDER_DATE CUST_SALES_TAX

CUST_SHIP_COST

CUST_SUBTOTAL CUST_TOTAL

CUST_TOTAL_QUANTITY

CRDT_METHOD_CODE CARD_EXPDATE CUST_CC_ID PRODUCT_NUMBER PRODUCT_NAME

903 100117 Zizi,Vila Rangel 100738 Friday-30-January-2004

25 9.16 102.09 134.61 2 25 Thursday-01-March-2012 10292 28110 Canyon Mule Cooler

923 100117 Zizi,Vila Rangel 100738 Friday-30-January-2004

45 9.16 102.09 134.61 2 25 Thursday-01-March-2012 10292 3110 TrailChef Kitchen Kit

List of Stored procedures from Microsoft Visual Studios 2010.

Page 22: IBM DB2 10

21

IBM Data Studio Workspace

Page 23: IBM DB2 10

22

Triggers

CREATE TRIGGER GOSALESCT.RECORD_INSERTAFTER INSERT ON GOSALESCT.CUST_ORDER_REC REFERENCING NEW AS INSERTEDFOR EACH ROW MODE DB2SQL INSERT INTO GOSALESCT.CUST_ORDER_ADUIT (REC_ID,cust_code,cust_name,cust_order_number,order_date,

cust_sales_tax,cust_ship_cost,cust_subtotal,cust_total,cust_total_quantity,crdt_method_code,card_expdate,cust_cc_id,product_number,product_name, ACTION_TYPE)

VALUES(INSERTED.REC_ID,INSERTED.cust_code,INSERTED.cust_name,INSERTED.cust_order_number,INSERTED.order_date,INSERTED.cust_sales_tax,INSERTED.cust_ship_cost,INSERTED.cust_subtotal,INSERTED.cust_total,INSERTED.cust_total_quantity,INSERTED.crdt_method_code,INSERTED.card_expdate,INSERTED.cust_cc_id,INSERTED.product_number,INSERTED.product_name, 'INSERT');

Execute the previous stored procedure used to populate cust_order_rec table.

CALL Order_Rec4(100185);

Select * from cust_order_rec table;

REC_ID CUST_CODE

CUST_NAME CUST_ORDER_NUMBER

ORDER_DATE

CUST_SALES_TAX

CUST_SHIP_COST

CUST_SUBTOTAL

CUST_TOTAL

CUST_TOTAL_QUANTITY

CRDT_METHOD_CODE

CARD_EXPDATE

CUST_CC_ID

PRODUCT_NUMBER

PRODUCT_NAME

903 100117 Zizi,Vila Rangel

100738 Friday-30-January-2004

25 9.16 102.09 134.61 2 25 Thursday-01-March-2012

10292 28110 Canyon Mule Cooler

923 100117 Zizi,Vila Rangel

100738 Friday-30-January-2004

45 9.16 102.09 134.61 2 25 Thursday-01-March-2012

10292 3110 TrailChef Kitchen Kit

963 100185 Jeff,Canon 100910 Thursday-29-January-2004

1.53 5.57 16.33 23.43 1 28 Sunday-01-September-2013

10359 73110 Single Edge

983 100185 Jeff,Canon 182071 Wednesday-18-April-2007

1.82 5.87 20.08 27.77 1 28 Sunday-01-September-2013

10359 73110 Single Edge

SELECT * FROM GOSALESCT.CUST_ORDER_ADUIT;

REC_ID CUST_CODE CUST_NAME CUST_ORDER_NUMBER ORDER_DATE CUST_SALES_TAX CUST_SHIP_COST CUST_SUBTOTAL CUST_TOTAL CUST_TOTAL_QUANTITY CRDT_METHOD_CODE CARD_EXPDATE CUST_CC_ID PRODUCT_NUMBER PRODUCT_NAME AUDIT_ID ACTION_TYPE ACTION_DATE ------ --------- ---------- ----------------- ------------------------ -------------- -------------- ------------- ---------- ------------------- ---------------- ------------------------ ---------- -------------- ------------ -------- ---------------------------------------- ----------------------- 963 100185 Jeff,Canon 100910 Thursday-29-January-2004 1.53 5.57 16.33 23.43 1 28 Sunday-01-September-2013 10359 73110 Single Edge 903 INSERT 2013-04-22 06:52:09.123 983 100185 Jeff,Canon 182071 Wednesday-18-April-2007 1.82 5.87 20.08 27.77 1 28 Sunday-01-September-2013 10359 73110 Single Edge 923 INSERT 2013-04-22 06:52:09.123

CREATE TRIGGER GOSALESCT.RECORD_DELETEAFTER DELETE ON GOSALESCT.CUST_ORDER_REC REFERENCING OLD AS DELETEDFOR EACH ROW MODE DB2SQL INSERT INTO GOSALESCT.CUST_ORDER_ADUIT (REC_ID,cust_code,cust_name,cust_order_number,order_date,

cust_sales_tax,cust_ship_cost,cust_subtotal,cust_total,cust_total_quantity,crdt_method_code,card_expdate,cust_cc_id,product_number,product_name, ACTION_TYPE)

VALUES(DELETED.REC_ID,DELETED.cust_code,DELETED.cust_name,DELETED.cust_order_number,DELETED.order_date,DELETED.cust_sales_tax,DELETED.cust_ship_cost,DELETED.cust_subtotal,DELETED.cust_total,DELETED.cust_total_quantity,DELETED.crdt_method_code,DELETED.card_expdate,DELETED.cust_cc_id,DELETED.product_number,DELETED.product_name, 'DELETE');

CALL GOSALESCT.Order_Rec_delete(100185, 73110, 963 );

Select * from cust_order_rec table;

REC_ID CUST_CODE CUST_NAME CUST_ORDER_NUMBER ORDER_DATE CUST_SALES_TAX CUST_SHIP_COST CUST_SUBTOTAL CUST_TOTAL CUST_TOTAL_QUANTITY

CRDT_METHOD_CODE

CARD_EXPDATE CUST_CC_ID PRODUCT_NUMBER

PRODUCT_NAME

903 100117 Zizi,Vila Rangel 100738 Friday-30-January-2004 25 9.16 102.09 134.61 2 25 Thursday-01-March-2012 10292 28110 Canyon Mule Cooler923 100117 Zizi,Vila Rangel 100738 Friday-30-January-2004 45 9.16 102.09 134.61 2 25 Thursday-01-March-2012 10292 3110 TrailChef Kitchen Kit983 100185 Jeff,Canon 182071 Wednesday-18-April-2007 1.82 5.87 20.08 27.77 1 28 Sunday-01-September-

201310359 73110 Single Edge

Page 24: IBM DB2 10

23

SELECT * FROM GOSALESCT.CUST_ORDER_ADUIT;

REC_ID CUST_CODE CUST_NAME CUST_ORDER_NUMBER ORDER_DATE CUST_SALES_TAX CUST_SHIP_COST CUST_SUBTOTAL CUST_TOTAL CUST_TOTAL_QUANTITY CRDT_METHOD_CODE CARD_EXPDATE CUST_CC_ID PRODUCT_NUMBER PRODUCT_NAME AUDIT_ID ACTION_TYPE ACTION_DATE ------ --------- ---------- ----------------- ------------------------ -------------- -------------- ------------- ---------- ------------------- ---------------- ------------------------ ---------- -------------- ------------ -------- ---------------------------------------- ----------------------- 963 100185 Jeff,Canon 100910 Thursday-29-January-2004 1.53 5.57 16.33 23.43 1 28 Sunday-01-September-2013 10359 73110 Single Edge 903 INSERT 2013-04-22 06:52:09.123 983 100185 Jeff,Canon 182071 Wednesday-18-April-2007 1.82 5.87 20.08 27.77 1 28 Sunday-01-September-2013 10359 73110 Single Edge 923 INSERT 2013-04-22 06:52:09.123 963 100185 Jeff,Canon 100910 Thursday-29-January-2004 1.53 5.57 16.33 23.43 1 28 Sunday-01-September-2013 10359 73110 Single Edge 943 DELETE 2013-04-22 07:15:04.816

List of triggers created as displayed in Oracle JDEVELOEPER

Page 25: IBM DB2 10

24

Page 26: IBM DB2 10

25

Page 27: IBM DB2 10

26