Using DELETEROW_SUB (Functions/Subroutines/Programs)

DELETEROW_SUB

DELETEROW_SUB( tableName, rowIds, options )

Using DELETEROW_SUB

Permanently deletes one or more rows from an Advanced Revelation table.

tableName

The name of the table from which the row is to be deleted. The table must be attached.

rowIds

An array (@FM-delimited) of row keys to be deleted. To delete all the rows in a table, use an asterisk (*) to mean "all rows". If a select list is active, leave rowIds null and the subroutine will delete only the rows represented in the select list. If a select list is active when you call DELETEROW_SUB, but you list explicit rows to delete in rowIds, the select list is preserved (until you return to TCL).

If you want to delete a DOS file, use the DOS file name as the tableName, including the path.

options

OptionMeaning
A (Announce) Displays a message in the status line showing the key for each row being deleted, along with the percentage complete
S (Suppress messages) Show no messages at all in the status line.
L (Lock) Locks rows before deleting them.
B (Batch) Puts a transaction around the entire delete process. If any errors occur, all changes are rolled back, and no rows are deleted.

Values returned

The return status of DELETEROW_SUB is indicated by the system variable @file.error. Multiple errors are delimited with record marks (@RM). The error number appears in field 1 of each @file.error "record", and additional information about the error appears in field 2. Possible errors are:

ErrorMeaning Add'l Info.
W189 Rows successfully deleted. <2> row count
401 Invalid or missing table name.
100 The key does not exist in tableName (status( ) returns zero).<2> key
421 User cancelled process.
W106 User quit while waiting for a lock; that row was skipped. <2> key

<3> table

Under some circumstances, DELETEROW_SUB sets these values for status( ):

status( )Meaning
-2 Successful deletion.
-1 User cancelled the process. Some rows may have been deleted.
1 An error occurred.
0 Non-critical error (for example, row to be deleted does not exist in the table).

Notes

Displaying messages while deleting

By default (without the "S" or "A" options), DELETEROW_SUB displays a "gas gauge" in the status line indicating how far along the process is. The percentage complete is displayed in the center of the status line.

The "A" option substitutes a text message displaying the key of the row being deleted. To suppress all messages, use the "S" option.

Locking

The "L" option causes DELETEROW_SUB to attempt to lock each row in the table before beginning to delete it. If the lock fails, DELETEROW_SUB enters a loop, checking each second or so to see if the row is available.

While DELETEROW_SUB is in its locking loop, the user can press [Esc] to stop the attempt to lock the record. In that case, DELETEROW_SUB skips that record and generates error message W106 to tell you that row could not be locked.

Correct use of DELETEROW_SUB

table = "SAMPLE_CUSTOMERS"

rowIds = "100,101,102,103"

options = "AL"

convert "," to @FM in rowIds

call deleterow_sub( table, rowIds, options )

begin case

case status() eq -2

rowCount = @file.error<2>

call msg( "%1% rows deleted!", "", "", rowCount )

case status() eq -1

text = "You aborted the delete process!"

call msg( text )

case status() eq 0

/* there may have been non-critical errors */

text = "Deletion successful"

case status() eq 1

call fsmsg() ; * display normal errors

end case

stop

  • kb/kb_articles/kb0066.txt
  • Last modified: 2024/01/30 13:36
  • by 127.0.0.1