when does the SQL statement gets executed when you use
cursor in the application programming ?
Answers were Sorted based on User's Feedback
Answer / mna
The process of using cursor is:
1. declare the cursor in working storage: You will write
the SQL query here
2. open the declared cursor : this is when the actual SQL
query is executed and the fetched rows are moved to the
cursor storage.
3. Fetch rows from cursor : Reading rows one by one on the
Cursor just like we read records from a sequential file
4. Close cursor : While fetching if we get an SQLCODE=+100
it is the end of the cursor just like we encounter eof
while reading records from a sequential file. Once this
condition is encountered we will close the cursor.
Is This Answer Correct ? | 1 Yes | 1 No |
Answer / m4io
It depends
If the cursor needs materialization then it gets executed
on "open cursor" like answer 1 and 2 say.
else
the query for the next row gets executed on each fetch.
Materialization happens f.e. when sorts are used.
You can close a cursor without having sqlcode +100.
Suppose a cics transaction reads a table (1.000.000 rows)
via an index : if only 20 rows are needed it will only
request 20 rows (1 each fetch) and then close the cursor.
In batch : if I get 100 pens and need to distribute them to
the people who requested some in order of date-requested, I
will close cursor as soon as 100 pens are distributed.
Is This Answer Correct ? | 1 Yes | 1 No |
What is a collection?
What is the difference between cursor and select statement?
What is package in db2 mainframe?
What is the difference between nvl and coalesce?
Explain in detail about buffer manager and its functionalities?
What do you need to do before you do EXPLAIN ?
max number of columns in a db2 table?
How does the processing of a correlated subquery differ from a non correlated subquery?
Define data page.
What statistic will tell the DBA how must space can be reclaimed from dropped table spaces on the next reorg run?
Parm value passed is PARM=(10,20). how do code linkage section and how would you add these two passes values and show result in cobol program.
If a non-DB2 program calls a DB2 program, the calling program's name will be there in SYSIN of IKJEFT01 and the plan name will be that of the called program. But is a bind needed or a plan has to be created for the non-DB2 program also?