Professional Documents
Culture Documents
SELECT 1. COLUMN
FROM TABLE
2. ROWS
P1 - 4000
P2 - 3000
P3 - 3000
TO FIND THE DUPLICATE IN A TABLE
ROW SELECTION
4. ORDER BY = SORT - A , D.
SQLCODE:
DATABASE ISSUE:
DEVELOPER
SUCCESS
000 - SUCCES QUERY RUN
100
SELECT -> RECORD NOT FOUND
FETCH -> END OF THE RESULT SET
4. LOAD & UNLOAD:
-------------------------------------
IF THE DATA IS IN FILE -> FTP/ICEING -.> PROD FILE (PROD-TSO ) --> TEST
FILE(TEST - TSO)
IF THE DATA IN IN TABLE --> 1. UNLOAD THE DATA FROM TABLE -> FILE
2. FTP THE FILE FROM PROD-TSO TO TEST-TSO
3. LOAD -> FILE => TEST TABLE
MAINTAIN --> REQ FROM THE DEV/OTHER TEAM USER -> CONTACTING U TO REFER
THE TEST / SYSTEM TABLE
= PROD - UNLOAD
= TEST - LOAD
//SYSTSIN DD *
DSN SYSTEM(DB8G)
RUN PROGRAM(DSNTIAUL) PLAN(DSNTIB81) PARMS('SQL') -
LIB('DSN810.RUNLIB.LOAD')
/*
2 TYPE 1. LOAD RESUME ----> APPEND - ADD MORE NED RECORD ( ONLY
INSERT QUERY)
2. LOAD REPLACE --> REMOVE AND INSERT (INSERT + UPDATE +
DELETE)
AS WE ARE INVOLVING THE INSERT -ADD BULK DATA -> WE NEED -PERFORM THIS
LOAD..
UT - RW
==================================================================================
3. UPDATE:
1. MAIN _ SUB
2. RESTART
>> IN A UPDATE PROGRAM - WHERE WE HAVE A COMMIT TO SAVE THE CHANGE -> GOT FAILED
AFTER UPDATEING SOME RECORD.
NEXT =RERUN => SHOULD UPDATE ONLY THE RECORD WHICH ARE NOT UPDATED IN 1ST RUN..
RESTART LOGIC
PGM
1. FIRST TIME --> UPDATE FROM 1ST ROW OF THE CURSOR (NORMAL
PROCESS)
2. RESTART/LATER -> UPDATE SHOULD START AFTER FETCHIN THE LAST
COMMITED ROW
NORMAL PROCESS --> OPEN + FETCH + UPDATE --> COUNT=2 =COMMIT -> WRITE THE
RECORD TO A FILE (LAST COMMITED RECORD)< RESTART FILE
== LET SAY -> 4 RECORC COMMIT -> 5TH RECORD - ABEND
RESTART PROESS -> 1. GET THE LAST COMMITED ROW --> READ THE FILE TILL END.. GET
THE LAST COMMIT RECORD KEY - HOLD IT
2. OPEN + FETCH - TILL LAST COMMITED ROW == ONCE REACHED -> SET
THE UPDATE SWITCH = 'Y'
3. FROM THE NEXT ROW ---FETCH + UPDATE --> COUNT=2 =COMMIT ->
WRITE THE RECORD TO A FILE (LAST COMMITED RECORD)< RESTART FILE
---------+---------+---------+---------+---------+---------+---------+-
CLAIM_NUMBER CLAIM_AMOUNT CLAIM_STATUS POLCY_NUMBER CLAIM_SUBMIT_DT
---------+---------+---------+---------+---------+---------+---------+-
C1111 100.00 SUBMIT P1111 2021-10-07 VALID
--> APPROVE
C2222 400.00 SUBMIT P2222 2021-10-07 INVALID ->
CLAIM AMOUNT -> PENDING
C3333 100.00 SUBMIT P3333 2021-10-07 INVALID ->
CLAIM SUB DT -> REJECT
C4444 100.00 SUBMIT P4444 2021-10-07 IVALID
-. POLICY - REHJECT
DSNE610I NUMBER OF ROWS DISPLAYED IS 4
DSNE616I STATEMENT EXECUTION WAS SUCCESSFUL, SQLCODE IS 100
---------+---------+---------+---------+---------+---------+---------+-
UPDATE TABLENAME
SET COL = NEW-VALUE
WHERE CONDITION; == SELECTIVE ROW UPDATE
COMMIT OF THE CHANGE -> 1. TIME LIMIT = ANY QUERY EXCEEDING THE TIME
LIMIT OF QUERY -> -904
2. ROW LIMIT = WHEN U EXCEED THIS ROWLIMIT
-> -904
WE NEED TO USE CURSOR + UPDATE -> CHANGE --> CERTAIN COMMIT --> UR CURSOR
WIL BE CLOSED
-TO KEEP THE CURSOR IN OPEN -<WITH
HOLD>
-305 -> IN CASE WE DONT CODE THE NULL INDICATOR VARIBALE FOR A COLUMN
==?
SOLEVE - 3 STEPS
1. DEFINE THE NULL IND VARIBALE IN WORKING-STORAGE
3. IF SQLCODE = 00
IF WS-NULL-IND < 0
1. ABEND THE PGM -> COL DATA IS REQUIRED FOR
PGM LOGIC
2. A. MOVE SPACE/ZERO TO DCL-VAR
B. SKIP THE ROW PROCESS- SEND TO IT ERROR
FILE
NOW I WANT TO GET THE DATA FROM THE TABLE --> SELECT QUERY
PGM
SELECT -> QUERY => MULTIPLE ROWS - RESULT SET -> COBOL PGM (1SET OF VARIBALE
-FOR 1 ROWS) -=> SQLCODE = -811
SQLCODE = -811 -> WHENEVER OUR SELECT QUERY IN PGM , TRYING TO RETIIVE MORE
THAN 1 ROW.
SOLUTION:
DEV : AND UR REQUIEMENT ITSELF IS STATIING TO GET MULTIPLE ROWS -> SELECT + CURSOR
>> TO GET ALL CLAIM DATA FOR THE DAY > VALIDATE EACH ROW WITH THE POLICY TABLE
>> I WOULD LIKE TO GET ALL CLAIM NUMBER FOR A GIVEN POLICY NUMBER..
>> FOR A GIVEN POLICY NUMBER I WANT TO GET THE LAST/LATEST CLAIM NUMBER ONLY
POLICY -> MULTUPLE CLAIM
-> SELECT CLAIM=DATA FROM CLAIM TABLE
WHERE POILCY_NUMBER = GIVEN-INPUT-NUMBER
ORDER BY CLAIM_SUB_DT DESC
FETCH FIRST ROW ONLY
1. CURSOR NAME
2. TYPES OF CURSOR
1. SCROLL & NON-SCROLL(DEFAULT) =>
SCROLL -> USED TO GET ANY ROW IN ORDER FROM THE
CURSOR RESULT TABLE
NON-SCROLL -> USED TO GET ROWS 1 BY 1 FROM TOP
- BOTTOM IN SEQ
>> THE SELECT QUERY -> WIL BE EXECUTED ONLY AFTER U OPEN THE CURSOR
TABLE -> CURSRO+SELECT -> OPEN -> QUERY EXECUTION -> RRSULT SET --> <<
C-NAME
3. FETCH ==> USED TO GET 1 ROW FROM THE RESULT SET TO THE PGM
IF U WANT TO GET ALL ROW.. - LOOP..
DB2 PRACTICALS
1. AFTER U LOGIN , GO BACK TO SESSION -A VISTA -> START THE DB2 DATABASE
-DB9G START DB2
IBMUSER.T61.DB2
IBMUSER.T61.DBRM
IBMUSER.T61.DCLGEN
IBMUSER.T61.LOAD
IBMUSER.T61.SPUFI.OUTPUT -- CREATED BY TOOL (DONT CREATE URSELF)
3. CREATE A DB2 TABLE --> WE USE SPUFI (SQL PROCESSING USING FILE INPUTS)
2 FILES 1. INPUT -- PDS -> MEMBER -> CODE QUERY AS INPUT ==> F3
+ ENTER (EXECUTED)
2. OUTPUT -- PS - CREATED BY TOOL -> RESULT WIL BE IN THIS
DATASET
Enter the output data set name: (Must be a sequential data set)
4 DATA SET NAME ... ===> 'IBMUSER.T61.SPUFI.OUT'
<==== OUTPUT
6. COMPILATION (IBMUSER.DB2.SRC)
1. PRE-COMPILER
2. BIND JOB
3. DB2 RUN JOB
PRE-COMILATION PROCESS:
DURING THE BIND PROCESS -> OF CREATING A PACKAGE -> WE USE BIND PARAMETER AND
UPDATE THE QUERY**
CODE A QUERY IN THIS NOTEPAD -> CAN RUN THE QUERY??? NO == NOT CONNECTED
TO DB2 SYSTEM..
CODE A QUERY IN THE SPIFU-TOOL -> CAN RUN THE QUERY?? YES== CONNECTION
TJHRU PLAN
BEFORE DB2 VERSION 10 -> PGM- COBOL-DB2 -> PRC-OMPI;L -> DBRM _ LOAD ==> DBRM ->
PLAN (BIND PARAMETER)
AFTER DB2 VERSION 10
VERSION 10 -> PGM- COBOL-DB2 -> PRC-OMPI;L -> DBRM _ LOAD ==> DBRM ->
PACKAGE --> PLAN (BIND PARAMETER)
===================================================================================
=========================================
UR APP TXWCA01.CLAIM_TABLE
XY APP TXWCB01.POLICY_TABLE
OTHER XY APP TABLE = U NEED TO CODE ALONG WITH SCEHMA
NAME IN THE PGM QUERY
UR APPLICATION (SAME SSHCEMA IN BOTH TEST/PROD) -> U
CAN OMIT THE SCEHEA NAME..
2. BIND PLAN
ID DIVISION. NO CHANGE
ENVIRONMENT DIVISION. NO CHANGES (IF U HAVE A FILE DEFINE HERE)
DATA DIVISION.
WORKING-STROAGE SECTION.
2. DCLGEN OF TABLES
WE CREATE THRU DCLGEN TOOL
PROCEDURE DIVISION.
INSERT QUERY: THIS QUERY IS USED TO KEEP A ROW OF DATA INTO THE TABLE..
TOOl :
INSERT INTO SCHEMA.TABLENAME(COL1,COL2,COL3,...)
VALUES('12434'.'ANIL',98902,'2021-09-09');
TOOL:
SELECT * FROM SCHEMA.TABLENAME; *- ALL COL , ALL ROWS
SELECT COL1,COL2 FROM SCHEAM,TABLENAME; COL1,COL2 , ALL ROWS
SELECT COL1,COL2 FROM SCHEAM.TABLENAME
WHERE CONDITION; =COL1 , COL2 -> SELECTING THE ROWS
ALSO
IN COBOL-DB2
EXCE SQL
SELECT COL1,CO2..COL4
INTO :DCL-VAR1,:DCL-VAR2,:DCL-VAR3
FROM TABLENAME
WHERE CONDITION..
END-EXEC.
COBOL + DB2 ==> JOB J1 S1. IGYCRCTL -> COMPULEING THE SYNTAX
-> ERROR -> EXEC SQL..
PRE-COMPILATION PROCESS:
DATA -TYPE
DB2 TYPES COBOL DATA-TYPES
DB2 CONSTRAINTS:
RULES THAT ARE IMPOSED ON A COLUMN OF THE TABLE TO AVOID INCORRECT/INVALID DATA
INTO THE TABLES..
TABLE: CLAIM_TAB
5. FORIGEN KEY --> THIS COL USED TO SETUP A RELATION WITH THE PARENT TABLE
-- THE COL OF PARENT - PK
-- WIL BE THE SAME COL IN CHILD - FK
2 NEW RULES:
INSERT>> 1. WE CANNOT HAVE ANY CHILD ROW WITHOUT A
PARENT
DELETE>> 1. IN CASE TO DELETE A PARENT
WHAT HAPPEN TO A CHILD
INTRODUDCTION TO DB2:
DB2 -- SOFTWARE - WHICH MANAGES THE DATA STORE & RETRIVE METHOD
THEY WIL INSTALL MULTIPLE COPIES FOR EACH OF THE TSO (LPAR)
PROD - TEST - QUAL - ALL SAME TABLE == DATA WIL BE NOT SAME
MAINFRAME --> Z/OS -> DASD -> UNIT (SYSDA,SYSALDA) -> VOLUMNS -->
DATASET(PDS/PS) --> DATA/PGM
DBA -> ALLOCATE THE VOLUMNS OF SPACE TO DB2 SOFTWARE =CALLED > STORAGE GROUP
1. SCHEMA.TABLENAME
2. SSID.SCHEMA.TABLENAME
3. PATH -> SSID.DATABASE.TABLESPACE.SCHEMA.TABLE.DATA
====
CREATE
ALTER
DROP
1. USED TO DEFINE THE STURTURE OF THE OBJECT
2. ADMIN ACCESS (WE DONT HAVE ACCESS TO CRETAE ANY TABLE IN
THE PRJECT)
ADMIN = WORK
IF AM DEVELOPER/SUPORT