Updates the DataRow most recently fetched by using a DataRows cursor.
Syntax:
>>-EXEC ADO-.--------------------.--UPDATE-datatable_name---->
+-USING dataset_name-+
+----------- , -----------+
V |
>--SET---column_name = -+- :hvar-----+----------------------->
-+- col_value-+
>--WHERE CURRENT OF--datarows_name---END-EXEC----------------><
Parameters:
dataset_name
|
The DataSet reference to be used. If you do not specify
dataset_name, the current DataSet is used.
|
datatable_name
|
The name of the DataTable to be updated.
|
column_name
|
The column to be updated.
|
hvar
|
Host variable that contains the column value.
|
col_value
|
The column value.
|
datarows_name
|
A previously declared, opened, and fetched DataRows cursor.
|
Example:
* Declare the cursor
EXEC ADO
DECLARE c1 DATAROWS FROM oline
END-EXEC
* Open the cursor
EXEC ADO
OPEN c1
END-EXEC
* Modify the table using positioned updates and deletes
PERFORM UNTIL EXIT
* Delete row 1, 4, 7, ...
EXEC ADO FETCH c1 INTO :oline END-EXEC
IF SQLCODE NOT = 0
EXIT PERFORM
END-IF
EXEC ADO DELETE FROM oline WHERE CURRENT OF c1 END-EXEC
* Update row 2, 5, 8, ...
EXEC ADO FETCH c1 INTO :oline END-EXEC
IF SQLCODE NOT = 0
EXIT PERFORM
END-IF
MOVE 99 TO qty
EXEC ADO UPDATE oline SET qty = :qty WHERE CURRENT OF c1 END-EXEC
* Leave alone row 3, 6, 9, ...
EXEC ADO FETCH c1 INTO :oline END-EXEC
IF SQLCODE NOT = 0
EXIT PERFORM
END-IF
END-PERFORM
Comments:
EXEC ADO supports positioned update; however, not all ADO.NET data providers support positioned update.
With some ADO.NET data providers, the SELECT statement used by the cursor must contain a FOR UPDATE clause to enable positioned update.
The other form of UPDATE used in EXEC ADO statements is known as a searched update.
You cannot use host arrays with positioned update.
Most data sources require specific combinations of SCROLLOPTION and CONCURRENCY to be specified either by SET statements or in the DECLARE CURSOR statement.