Cursors can be declared in both working-storage & procedure
division, Agreed.
But is there any difference? If could you please suggest
what is the difference.
TIA
Answer Posted / arthi
Please refer the answer by Marcus_A here:
http://www.dbforums.com/db2/896592-cursor-declaration.html
This is the most concise answer I could find on the net, and it proves that there is no difference in the placement of the declare cursor.
Quoting from the page:
==============
The Declare Cursor SQL statement is not a procedural SQL statement. It is actually part of the Open statement for the Cursor it refers to, and can be placed anywhere in program source code as long as it is physically before the Open SQL statement. It can actually be placed in the Identification Division, although traditionally it is placed in the Working Storage Section.
If you were to examine the compile listing of your program, you will see that the DB2 pre-compiler did not generate a separate call to DB2 for the Declare Cursor (since it is really part of the Open statement for that Cursor).
The problem with placing the Declare Cursor in the Procedure Division is that programmers invariably place code right after the Declare Cursor to check the SQL return code. So what ends up happening is that the SQL code of a previously executed SQL statement gets checked by the program, and if a non-zero return code is acceptable (not an abend condition) for a previous Select statement (such as return code +100), then the program will get confused and often think an abend condition has occurred.
So, if you do put the Declare cursor in the Procedure Division (not a good idea in my opinion) then make absolutely sure that no user code is executed to check the SQL return code for Declare Cursor.
==============
Is This Answer Correct ? | 11 Yes | 4 No |
Post New Answer View All Answers
What is ibm db2 client?
How do you select a row using indexes in db2?
Hello All, We have requirment to Replace BMC Db2 Load product thru CA FAST LOADPlus product. Do anyone have JCL to for FAST LOADPLUS and what all are thing need to take in consideration.
Can one database have multiple instances?
Is it possible to alter a table – for example adding a column, when another user is accessing or updating some columns?
How does cobol compile db2 program?
Explain in detail about buffer manager and its functionalities?
What is buffer pool?
Explain db2.
How to access db2 tables in mainframe?
What is alias in db2?
How can we retrieve the total number of records in RPG & CLLE?
Is it possible to create an Instance in DB2 using DB2 Control Center ?
Mention the location where the output received from explain statement is stored.
Why do we use cursor?