Deletes the row most recently fetched by a DataRows cursor.
Syntax:
>>-EXEC ADO-.--------------------.-DELETE---FROM---datatable_name---->
+-USING dataset_name-+
>----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 same DataTable used in the SELECT FROM option (see DECLARE CURSOR).
|
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 delete; however, you cannot use host arrays with positioned delete.
The other type of DELETE used in standard EXEC ADO statements is known as a searched delete.