Progress
Language Reference
DELETE PROCEDURE Statement
Deletes an instance of a persistent procedure. The persistent procedure can be local or remote.
SYNTAX
proc-handle
The handle of a local or remote persistent procedure. This is a variable, field, or expression of type HANDLE that contains a valid persistent procedure handle.
For a proxy persistent procedure handle, this statement deletes the handle
NOTE: This same behavior occurs if the remote procedure deletes itself (using DELETE...THIS-PROCEDURE) on the AppServer.
immediately unless there is an outstanding asynchronous request on this handle (handle:ASYNC-REQUEST-COUNT is greater than zero (0)). If handle:ASYNC-REQUEST-COUNT is greater than zero (0), this statement raises the ERROR condition. Otherwise, the statement also sends a request to the AppServer to delete the corresponding remote persistent procedure on the AppServer. If the AppServer is executing any asynchronous requests ahead of it, Progress queues the delete request (as with any asynchronous remote request) until the AppServer is available to handle it.For more information on remote persistent procedures, see Building Distributed Applications Using the Progress AppServer .
NO-ERROR
Specifies that any errors that occur when you try to delete the procedure are suppressed. After the DELETE PROCEDURE statement completes, you can check the ERROR-STATUS system handle for information on any errors that might have occurred.
EXAMPLEWhen you run the following procedure non-persistently, the procedure creates a persistent instance of itself in addition to the non-persistent instance, creating two query windows for the customer table. Choosing the Cancel button in either window causes the instance that owns that window to terminate. If the instance you terminate is persistent, the Cancel button runs an internal procedure that executes the DELETE PROCEDURE statement for that instance as specified by the THIS-PROCEDURE system handle.
NOTES
- To be valid for deletion, proc-handle must reference an active persistent procedure. You can use the VALID-HANDLE function and PERSISTENT procedure attribute to check the validity of proc-handle. Thus, both VALID-HANDLE(proc-handle) and proc-handle:PERSISTENT must be TRUE to delete the specified procedure. If either of these expressions is FALSE, the DELETE PROCEDURE statement raises the ERROR condition.
- When you delete a persistent procedure instance, its context goes out of scope and all allocated resources are returned to the system. In addition, it is removed from the chain of persistent procedures referenced by the FIRST-PROCEDURE and LAST-PROCEDURE attributes of the SESSION system handle.
- If you delete a persistent procedure instance while executing statements within that procedure, the DELETE PROCEDURE statement pends until the largest executing block in the persistent procedure terminates. Thus, if the DELETE PROCEDURE occurs while the main procedure block is executing (when the persistent procedure is called), the procedure is deleted when the procedure returns (as if it were non-persistent). If the DELETE PROCEDURE occurs during execution of a trigger or execution of an internal procedure that is called from another external procedure, the procedure is deleted after the trigger block or internal procedure returns. Note that while the delete is pending, the persistent procedure remains valid in the persistent procedure chain.
- The DELETE PROCEDURE statement disconnects any local buffers established by the procedure. In addition, any buffers passed as parameters to a persistent procedure are treated as local buffers. While all cursor positioning established on these buffers by the persistent procedure is lost, there is no affect on the original buffers passed as parameters from the caller. Note that all buffers are validated before being disconnected (which might cause database write triggers to execute). If the validation fails, the DELETE PROCEDURE statement raises the ERROR condition and pends the deletion until the validation succeeds and all database write triggers have completed.
- For more information on working with asynchronous remote procedures and event procedures, see the Building Distributed Applications Using the Progress AppServer manual.
SEE ALSO
RUN Statement, THIS-PROCEDURE System Handle, VALID-HANDLE Function
Copyright © 2004 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095 |