Consultor Eletrônico



Kbase P62088: How to list or kill all the running persitent procedures tha
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   1/12/2004
Status: Unverified

GOAL:

How to list all the running persitent procedures that refer to a database?

GOAL:

How to kill / delete all the running persitent procedures that refer to a database?

FIX:

The following example kills all the running persistent procedures that refer to a given database:

RUN ListConnectProc.p ("dynsports").

MESSAGE RETURN-VALUE
VIEW-AS ALERT-BOX INFO BUTTONS OK.


/* ListConnectProc.p */

DEFINE INPUT PARAMETER ipcDbname AS CHARACTER NO-UNDO.
DEFINE VARIABLE hp AS HANDLE NO-UNDO. /* Procedure handle */
DEFINE VARIABLE cList AS CHARACTER NO-UNDO. /* List of Proc handle, beware 32k limit */
DEFINE VARIABLE hToDelete AS HANDLE NO-UNDO.

hp = SESSION:FIRST-PROCEDURE.

DO WHILE VALID-HANDLE(hp):
IF CAN-DO(hp:DB-REFERENCES,ipcDbname) THEN DO:
hToDelete = hp.
cList = cList + "," + hp:FILE-NAME.
END.
hp = hp:NEXT-SIBLING.
IF VALID-HANDLE(hToDelete) THEN DELETE PROCEDURE hToDelete.
END.

cList = SUBSTR(cList,2) NO-ERROR. /* remove first comma, NO-ERROR if list is empty */

RETURN cList. /* if you want to see the list */