0% found this document useful (0 votes)
62 views

DB2PROGRAMS

This document contains code samples demonstrating the use of SQL cursors and the EXECUTE IMMEDIATE statement in DB2. The cursor samples show opening and fetching from a cursor, updating a record using the CURRENT OF clause, and displaying output. The EXECUTE IMMEDIATE sample deletes a record by executing a dynamic SQL statement stored in a host variable.

Uploaded by

Rafiq Basha
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
62 views

DB2PROGRAMS

This document contains code samples demonstrating the use of SQL cursors and the EXECUTE IMMEDIATE statement in DB2. The cursor samples show opening and fetching from a cursor, updating a record using the CURRENT OF clause, and displaying output. The EXECUTE IMMEDIATE sample deletes a record by executing a dynamic SQL statement stored in a host variable.

Uploaded by

Rafiq Basha
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 7

CURSOR DELETION

EDIT MTPLB09.DB2.SOURCE(CURDE) - 01.04 Columns


****** ***************************** Top of Data ******************
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. CURUP.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000500 WORKING-STORAGE SECTION.
000600 EXEC SQL
000700 INCLUDE VIDYA2
000800 END-EXEC.
000900 EXEC SQL
001000 INCLUDE SQLCA
001100 END-EXEC.
001200 PROCEDURE DIVISION.
001300 EXEC SQL
001400 DECLARE CUR CURSOR FOR
001500 SELECT NOQ, NAMEQ FROM DEVI1
001400 DECLARE CUR CURSOR FOR
001500 SELECT NOQ, NAMEQ FROM DEVI1
001700 WHERE NOQ ='300'FOR UPDATE OF NAMEQ
001800 END-EXEC.
001900 EXEC SQL
002000 OPEN CUR
002100 END-EXEC.
002200 PERFORM FE-PARA.
002300 EXEC SQL
002400 CLOSE CUR
002500 END-EXEC.
002600 STOP RUN.
002700 FE-PARA.
002800 EXEC SQL
002900 FETCH CUR INTO :NOQ,:NAMEQ
003000 END-EXEC.
003100 IF NOQ = '300'
003200 EXEC SQL
003300 DELETE FROM DEVI1
003400 WHERE CURRENT OF CUR
003500 END-EXEC
003700 ELSE
003800 DISPLAY 'BINGO'.
****** **************************** Bottom of Data ****************************
TABLE BEFORE DELETION
SELECT * FROM DEVI1;
---------+---------+---------+---------+---------+---------+
NOQ NAMEQ SALARYQ
---------+---------+---------+---------+---------+---------+
300 MANGO 70000.
400 GRAPES 80000.
DSNE610I NUMBER OF ROWS DISPLAYED IS 2
TABLE AFTER DELETION
SELECT * FROM DEVI1;
---------+---------+---------+---------
NOQ NAMEQ SALARYQ
---------+---------+---------+---------
400 GRAPES 80000.
DSNE610I NUMBER OF ROWS DISPLAYED IS 1
--------------------------------------------------------------------------------------------------------------------------------
-----------------
CURSOR PROGRAM
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. CURPG.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000500 WORKING-STORAGE SECTION.
000600 EXEC SQL
000700 INCLUDE EMP
000800 END-EXEC.
000900 EXEC SQL
001000 INCLUDE SQLCA
001010 END-EXEC.
001020 PROCEDURE DIVISION.
001030 EXEC SQL
001040 DECLARE CUR CURSOR FOR SELECT * FROM 001050
001050 END-EXEC.
001060 EXEC SQL
001070 OPEN CUR
001080 END-EXEC.
001090 PERFORM FETCHP UNTIL SQLCODE = 100.
001100 FETCHP.
001200 EXEC SQL
001300 FETCH CUR INTO:DCLEMPLOYEES
001400 END-EXEC.
001500 IF SQLCODE = 100
001600 EXEC SQL
001700 CLOSE CUR
001800 END-EXEC
001900 STOP RUN
002000 END-IF.
002100 DISPLAY DCLEMPLOYEES.
INTO :NOQ,:NAMEQ
002900 END-EXEC.
002910 IF NOQ = 23
003000 EXEC SQL
003100 UPDATE DEVI1 SET NAMEQ = 'ESWARI'
003200 WHERE CURRENT
OF----------------------------------------------------------------------------------------------------------------------------
-------------------
OUTPUT

88 SUSMI T TH MCOM22345620 2004-03-25ACCOUNT F1979-06-1


15 TULSI O PH EEE 25675620 2003-06-15ENGINER F1980-04-1
20 ARYAI B NA MTEC26783420 2003-05-11SENOREN F1980-01-0
22 SANKU V NA EEC 22244760 2003-02-06OFFICER F1981-06-1
45 KALPAN S NA MBBS275655620 2004-03-28DOCTOR F1981-08-1
90 SUSPAN T TH MBBS275655620 2004-03-28DOCTOR F1981-08-1
--------------------------------------------------------------------------------------------------------------------------------
---------------
CURSOR UPDATION
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. CURUP.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000500 WORKING-STORAGE SECTION.
000600 EXEC SQL
000700 INCLUDE VIDYA4
000800 END-EXEC.
000900 EXEC SQL
001000 INCLUDE SQLCA
001100 END-EXEC.
001400 PROCEDURE DIVISION.
001500 EXEC SQL
001600 DECLARE CUR CURSOR FOR
001700 SELECT NOQ,NAMEQ FROM DEVI2
001800 WHERE NOQ ='23' FOR UPDATE OF NAMEQ
001900 END-EXEC.
002000 EXEC SQL
002100 OPEN CUR
002200 END-EXEC.
002500 PERFORM FE-PARA.
002510 EXEC SQL
002520 CLOSE CUR
002530 END-EXEC.
002540 STOP RUN.
002600 FE-PARA.
002700 EXEC SQL
002800 FETCH CUR INTO :NOQ,:NAMEQ
002900 END-EXEC.
002910 IF NOQ = 23
003000 EXEC SQL
003100 UPDATE DEVI1 SET NAMEQ = 'ESWARI'
003200 WHERE CURRENT OF CUR
003300 END-EXEC
003310 DISPLAY NOQ ,NAMEQ
003320 ELSE
003330 DISPLAY 'BINGO'.
--------------------------------------------------------------------------------------------------------------------------------
---------------
INPUT TABLE
SELECT * FROM DEVI2;
---------+---------+---------+---------+---
NOQ NAMEQ SALARYQ
---------+---------+---------+---------+---
12 AMBILY 12000.
23 SANGAM 5000.
25 NEELIM 4000.
32 DEEPA 6000.
34 JALAJA 30000.
DSNE610I NUMBER OF ROWS DISPLAYED IS 5
--------------------------------------------------------------------------------------------------------------------------------
--------------
OUTPUT TABLE
SELECT * FROM DEVI2;
---------+---------+---------+---------
NOQ NAMEQ SALARYQ
---------+---------+---------+---------
12 AMBILY 12000.
23 ESWARI 5000.
25 NEELIM 4000.
32 DEEPA 6000.
34 JALAJA 30000.
DSNE610I NUMBER OF ROWS DISPLAYED IS 5
--------------------------------------------------------------------------------------------------------------------------------
---------------
DISPLAY REQUIRED RECORD
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. EMPLO.
000003 ENVIRONMENT DIVISION.
000004 DATA DIVISION.
000005 WORKING-STORAGE SECTION.
000006 EXEC SQL
000007 INCLUDE EMP
000008 END-EXEC.
000009 EXEC SQL
000010 INCLUDE SQLCA
000011 END-EXEC.
000012 PROCEDURE DIVISION.
000013 EXEC SQL
000014 SELECT EMPNO INTO:EMPNO
000015 FROM EMPLOYEES WHERE PHONENO = 22345620
000016 END-EXEC.
000017 DISPLAY EMPNO.
000018 STOP RUN.
--------------------------------------------------------------------------------------------------------------------------------
---------------
INPUT
EMPNO FIRSTNAME MIDINIT LASTNAME WORKDEPT PHONENO HIREDATE
---------+---------+---------+---------+---------+---------+---------+---------+
88 SUSMI T TH MCOM 22345620 2004-03-25
15 TULSI O P EEE 25675620 2003-06-15
20 ARYA B NA MTEC 26783420 2003-05-11
22 SANKU V NA EEC 22244760 2003-02-06
45 KALPAN S NA MBBS 275655620 2004-03-28
90 SUS T TH -------- 22345620 2004-03-25
DSNE610I NUMBER OF ROWS DISPLAYED IS 6
--------------------------------------------------------------------------------------------------------------------------------
---------------
OUTPUT
90
-----------------------------------------------------------------------------------------------
EXECUTE IMMEDIATE

000100 IDENTIFICATION DIVISION.


000200 PROGRAM-ID. EXEIM.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000500 WORKING-STORAGE SECTION.
000600 EXEC SQL
000700 INCLUDE VIDYA4
000800 END-EXEC.
000900 EXEC SQL
001000 INCLUDE SQLCA
001100 END-EXEC.
001200 01 WS-HOST.
001210 49 WS-HOST-L PIC S9(4) USAGE COMP.
001220 49 WS-HOST-T PIC X(80).
001300 PROCEDURE DIVISION.
001310 MOVE +45 TO WS-HOST-L.
001400 MOVE "DELETE FROM DEVI2 WHERE NOQ = '200'" TO WS-HOST-T.
001500 EXEC SQL
001600 EXECUTE IMMEDIATE :WS-HOST
001700 END-EXEC.
001800 STOP RUN.
--------------------------------------------------------------------------------------------------------------------------------
---------------
INPUT TABLE
SELECT * FROM DEVI2;
---------+---------+---------+---------+-
NOQ NAMEQ SALARYQ
---------+---------+---------+---------+-
12 AMBILY 12000.
23 ESWARI 5000.
25 NEELIM 4000.
32 DEEPA 6000.
34 JALAJA 30000.
DSNE610I NUMBER OF ROWS DISPLAYED IS 5
--------------------------------------------------------------------------------------------------------------------------------
---------------
OUTPUT TABLE
SELECT * FROM DEVI2;
---------+---------+---------+---------+---
NOQ NAMEQ SALARYQ
---------+---------+---------+---------+---
12 AMBILY 12000.
23 ESWARI 5000.
32 DEEPA 6000.
34 JALAJA 30000.
--------------------------------------------------------------------------------------------------------------------------------
---------------
VSAM TO DB2
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. FILCO.
000300 ENVIRONMENT DIVISION.
000400 INPUT-OUTPUT SECTION.
000500 FILE-CONTROL.
000600 SELECT INFILE ASSIGN TO DD1
000700 ORGANIZATION IS INDEXED
000800 ACCESS MODE IS DYNAMIC
000900 RECORD KEY IS NO1
000910 FILE STATUS IS STAT.
001000 DATA DIVISION.
001100 FILE SECTION.
001200 FD INFILE.
001300 01 INREC.
001400 02 NO1 PIC X(3).
001500 02 FILLER PIC X(2).
001600 02 NAME1 PIC X(6).
001700 02 FILLER PIC X(2).
001800 02 SALARY1 PIC 9(6).
001900 02 FILLER PIC X(61).
002000 WORKING-STORAGE SECTION.
002100 EXEC SQL
002200 INCLUDE VIDYA2
002300 END-EXEC.
002400 EXEC SQL
002500 INCLUDE SQLCA
002600 END-EXEC.
002680 01 STAT PIC X(2).
002700 PROCEDURE DIVISION.
002800 MAIN-PARA.
002900 OPEN INPUT INFILE.
003000 MOVE '23' TO NO1.
003100 START INFILE KEY EQUAL TO NO1.
003200 PERFORM FE-PARA UNTIL STAT = 10.
003300 CLOSE INFILE.
003400 STOP RUN.
003700 FE-PARA.
003800 READ INFILE NEXT RECORD.
003801 DISPLAY NOQ , NAMEQ , SALARYQ.
003810 MOVE NO1 TO NOQ.
003820 MOVE NAME1 TO NAMEQ.
003830 MOVE SALARY1 TO SALARYQ.
003900 EXEC SQL
004000 INSERT INTO DEVI1
004010 VALUES( :NOQ , :NAMEQ , :SALARYQ )
004100 END-EXEC.
--------------------------------------------------------------------------------------------------------------------------------
---------------
INPUT

KEY OF RECORD - 12
12 ..AMBILY..012000............................

KEY OF RECORD - 23
23 ..SANGAM..005000............................

KEY OF RECORD - 25
25 ..NEELIM..004000............................

KEY OF RECORD - 32
32 ..DEEPA ..006000............................

KEY OF RECORD - 34
34 ..JALAJA..030000............................

IDC0005I NUMBER OF RECORDS PROCESSED WAS 6


***
--------------------------------------------------------------------------------------------------------------------------------
---------------
OUTPUT

You might also like