0
DB2 Database By
Sunny Okoro
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
2
3
Database Platform
IBM DB2 EXPRESS EDITION
Applications
DB2
Command Line Processor
4
Microsoft Visual Studio 2010 and 2012
Oracle JDeveloper
5
IBM Data Studio
Microsoft Visio 2010
6
Microsoft Excel and Power Pivot
7
Sample Database Installation
8
9
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
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
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
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
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
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'
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
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
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
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.
21
IBM Data Studio Workspace
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
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
24
25
26
Top Related