Answers

Question and Answer:

  Home  IBM DB2

⟩ Is it Possible to declare or create a cursor for UPDATE of table? If yes tell me how? If no Tell me why?

Updating a column: You can update columns in the rows that

you retrieve. Updating a row after you use a cursor to

retrieve it is called a positioned update. If you intend to

perform any positioned updates on the identified table,

include the FOR UPDATE clause. The FOR UPDATE clause has

two forms:

• The first form is FOR UPDATE OF column-list. Use

this form when you know in advance which columns you need

to update.

• The second form is FOR UPDATE, with no column list.

Use this form when you might use the cursor to update any

of the columns of the table.

For example, you can use this cursor to update only the

SALARY column of the employee table:

EXEC SQL

DECLARE C1 CURSOR FOR

SELECT EMPNO, FIRSTNME, MIDINIT, LASTNAME, SALARY

FROM DSN8810.EMP X

WHERE EXISTS

(SELECT *

FROM DSN8810.PROJ Y

WHERE X.EMPNO=Y.RESPEMP

AND Y.PROJNO=:GOODPROJ)

FOR UPDATE OF SALARY;

If you might use the cursor to update any column of the

employee table, define the cursor like this:

EXEC SQL

DECLARE C1 CURSOR FOR

SELECT EMPNO, FIRSTNME, MIDINIT, LASTNAME, SALARY

FROM DSN8810.EMP X

WHERE EXISTS

(SELECT *

FROM DSN8810.PROJ Y

WHERE X.EMPNO=Y.RESPEMP

AND Y.PROJNO=:GOODPROJ)

FOR UPDATE;

DB2 must do more processing when you use the FOR UPDATE

clause without a column list than when you use the FOR

UPDATE clause with a column list.

 238 views

More Questions for you: