REPOSITION queryTO ROWID rowid1 , rowid2FOR TENANT tenant-expression NO-ERRORTO RECID recid NO-ERRORROW nFORWARDS nBACKWARDS nRepositions the join levels of a query to the corresponding ROWID expressions (rowid1, rowid2, and so on) that you specify, where rowid1 represents the ROWID for the top level of the join, rowid2 represents the ROWID for the next level of the join, and so on. You can specify any number of ROWID expressions up to the number of join levels. If you specify fewer ROWID expressions than the number of join levels, the AVM repositions the join levels of the query to the corresponding ROWID expressions you specify, but positions the remaining join levels for the unspecified ROWID expressions arbitrarily.The FOR TENANT option is useful only for a multi-tenant database, and primarily one with a connection identity that has super tenant access. If the user has a super-tenant connection identity and you do not specify this option, the query repositions to data owned by the effective tenant. If you do specify this option, the query repositions to data owned by the regular tenant identified by tenant-expression.If the user has a regular-tenant connection identity, and you specify this option, tenant-expression must match the tenancy of the connection identity. Otherwise, the statement raises ERROR.If tenant-expression evaluates to an integer, the value must be a valid tenant ID for a regular tenant or zero (0) for the default tenant. If tenant-expression evaluates to a character string, the value must be a valid tenant name for a regular or "Default" for the default tenant. Otherwise, the statement raises ERROR.TO RECID recid NO-ERRORSimilar to the TO ROWID option, except that the value recid is an expression that evaluates to a RECID value, and you can specify only one recid. Supported only for backward compatibility.Suppresses ABL errors or error messages that would otherwise occur and diverts them to the ERROR-STATUS system handle. If an error occurs, the action of the statement is not done and execution continues with the next statement. If the statement fails, any persistent side-effects of the statement are backed out. If the statement includes an expression that contains other executable elements, like methods, the work performed by these elements may or may not be done, depending on the order the AVM resolves the expression elements and the occurrence of the error.
Check if the ERROR-STATUS:NUM-MESSAGES attribute is greater than zero to see if the AVM generated error messages. ABL handle methods used in a block without a CATCH end block treat errors as warnings and do not raise ERROR, do not set the ERROR-STATUS:ERROR attribute, but do add messages to the ERROR-STATUS system handle. Therefore, this test is the better test for code using handle methods without CATCH end blocks. ABL handle methods used in a block with a CATCH end block raise ERROR and add messages to the error object generated by the AVM. In this case, the AVM does not update the ERROR-STATUS system handle.
Use ERROR-STATUS:GET-MESSAGE( message-num ) to retrieve a particular message, where message-num is 1 for the first message.TO ROW nRepositions the cursor to before the specified row in the result list of the query. The value n must be an integer expression that identifies a row in the result list. You cannot use this option with a query opened with the INDEXED-REPOSITION option.FORWARDS nMoves the cursor from its current position in the result list to a new position n records forward, where n represents an integer expression.Moves the cursor from its current position in the result list to a new position n records back, where n represents an integer expression.
If you try to position the cursor outside the list of records that satisfy the query, the AVM does not raise the ERROR condition. If you try to position the cursor before the first record, the AVM positions the query to just before the first record. If you try to position the cursor beyond the last record, the AVM positions it just beyond the last record.
When specifying the FOR TENANT option, the AVM looks up tenant-expression in the database with a share lock. The AVM waits 60 seconds to get the share lock and raises ERROR if it fails to obtain the share lock in that amount of time. The AVM releases the share lock immediately after successfully fetching the row. This share lock is released even if the statement is called while in the scope of a transaction.
© 2013 Progress Software Corporation and/or its subsidiaries or affiliates. |