77 lines
2.4 KiB
Plaintext
77 lines
2.4 KiB
Plaintext
/* $Revision: 2 $
|
|
* $Modtime: 22-02-12 14:20 $
|
|
*/
|
|
|
|
CREATE OR REPLACE PACKAGE adm
|
|
AS
|
|
PROCEDURE systrackscript (n IN VARCHAR2, r IN VARCHAR2, force IN NUMBER);
|
|
PROCEDURE trydrop (n IN VARCHAR2);
|
|
END adm;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY adm
|
|
AS
|
|
PROCEDURE systrackscript (n IN VARCHAR2, r IN VARCHAR2, force IN NUMBER)
|
|
AS
|
|
revisionnr VARCHAR2 (60);
|
|
scriptname VARCHAR2 (60);
|
|
d1 adm_tracking.adm_tracking_name%TYPE;
|
|
d2 adm_tracking.adm_tracking_revision%TYPE;
|
|
BEGIN
|
|
-- Als force = 1 dan wordt onvoorwaardelijk getrackt, anders
|
|
-- wordt niet getrackt als deze (n,r) al eerder werd getrackt
|
|
revisionnr := REPLACE (r, '$', '');
|
|
revisionnr := RTRIM (REPLACE (revisionnr, 'Revision: ', ''));
|
|
scriptname := REPLACE (n, '$', '');
|
|
scriptname := RTRIM (REPLACE (scriptname, 'Workfile: ', ''));
|
|
|
|
IF force = 1
|
|
THEN
|
|
INSERT INTO adm_tracking (adm_tracking_name, adm_tracking_revision
|
|
)
|
|
VALUES (scriptname, revisionnr
|
|
);
|
|
ELSE
|
|
BEGIN
|
|
UPDATE adm_tracking
|
|
SET adm_tracking_date = SYSDATE, adm_tracking_osuser = SYS_CONTEXT ('USERENV', 'OS_USER')
|
|
WHERE UPPER (adm_tracking_name) = UPPER (scriptname)
|
|
AND UPPER (adm_tracking_revision) = UPPER (revisionnr);
|
|
|
|
IF SQL%ROWCOUNT = 0
|
|
THEN
|
|
INSERT INTO adm_tracking (adm_tracking_name, adm_tracking_revision
|
|
)
|
|
VALUES (scriptname, revisionnr
|
|
);
|
|
END IF;
|
|
END;
|
|
END IF;
|
|
END;
|
|
|
|
-- DDL. Probeert een object (TABLE, INDEX e.d.) te droppen, maar moppert niet als die niet bestond
|
|
-- Hiermee voorkomen we foutmeldingen in logfiles die niet erg zijn
|
|
PROCEDURE trydrop (n IN VARCHAR2)
|
|
AS
|
|
stmt VARCHAR2 (1000);
|
|
BEGIN
|
|
stmt := 'DROP ' || n;
|
|
|
|
EXECUTE IMMEDIATE stmt;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
IF SQLCODE IN (-942, -1418, -2289, -4043)
|
|
THEN
|
|
-- did not exist, voor table, view, index, sequence en object
|
|
NULL;
|
|
ELSE
|
|
raise_application_error (-20001, 'Error trying to DROP ' || n || ': ' || SQLERRM);
|
|
END IF;
|
|
END;
|
|
|
|
END adm;
|
|
/
|
|
|
|
REGISTERRUN('$Workfile: ADM_PAC.SRC $','$Revision: 2 $')
|