DELETE PROCEDURE statement
- Last Updated: February 11, 2026
- 3 minute read
- OpenEdge
- Version 13.0
- Documentation
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 procedure handle, this statement deletes the handle immediately unless there is an outstanding asynchronous request on this handle (handle
:ASYNC-REQUEST-COUNTis greater than zero (0)). If handle:ASYNC-REQUEST-COUNTis greater than zero (0), this statement raises theERRORcondition. Otherwise, the statement also sends a request to the application server to delete the corresponding remote persistent procedure on the application server. If the application server is executing any asynchronous requests ahead of it, the AVM queues the delete request (as with any asynchronous remote request) until the application server is available to handle it.Note: This same behavior occurs if the remote procedure deletes itself (usingDELETE...THIS-PROCEDURE) on the application server. - NO-ERROR
- The NO-ERROR option is used to prevent the statement from raising
ERRORand displaying error messages.
Example
When 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.
r-delprc.p
|
Notes
- To be valid for deletion, proc-handle
must reference an active persistent procedure. You can use the
VALID-HANDLEfunction andPERSISTENTprocedure attribute to check the validity of proc-handle. Thus, bothVALID-HANDLE(proc-handle) and proc-handle:PERSISTENTmust be TRUE to delete the specified procedure. If either of these expressions is FALSE, theDELETE PROCEDUREstatement raises theERRORcondition. - 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-PROCEDUREandLAST-PROCEDUREattributes of theSESSIONsystem handle. - If you delete a persistent procedure instance while executing statements
within that procedure, the
DELETE PROCEDUREstatement pends until the largest executing block in the persistent procedure terminates. Thus, if theDELETE PROCEDUREoccurs 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 theDELETE PROCEDUREoccurs 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 PROCEDUREstatement will only delete the proxy handle on the client of a procedure run as single-run or singleton. This is because the AVM automatically deletes a single-run procedure after execution, and a singleton procedure may be running on multiple Progress Application Server (PAS) for OpenEdge instances. - The
DELETE PROCEDUREstatement 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, theDELETE PROCEDUREstatement raises theERRORcondition and pends the deletion until the validation succeeds and all database write triggers have completed.
See also
RUN statement, THIS-PROCEDURE system handle, NO-ERROR option, VALID-HANDLE function