1137 lines
44 KiB
SQL
1137 lines
44 KiB
SQL
CREATE OR REPLACE PACKAGE AAXX
|
||
AS
|
||
-- PACKAGES voor de perslid import functions
|
||
|
||
PROCEDURE set_prs_kenmerk (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_niveau IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER,
|
||
p_kenmerk_waarde IN VARCHAR2);
|
||
|
||
PROCEDURE prs_set_werkplek (p_perslid_key IN NUMBER,
|
||
p_ruimte_key IN NUMBER,
|
||
p_werkplek_volgnr IN NUMBER,
|
||
p_werkplek_omschrijving IN VARCHAR2,
|
||
p_wp_expliciet IN NUMBER,
|
||
p_errormsg OUT VARCHAR2,
|
||
p_errorhint OUT VARCHAR2);
|
||
|
||
PROCEDURE prs_update_werkplek (p_locatie_code IN VARCHAR2,
|
||
p_gebouw_code IN VARCHAR2,
|
||
p_verdieping_volgnr IN VARCHAR2,
|
||
p_ruimte_nr IN VARCHAR2,
|
||
p_werkplek_volgnr IN NUMBER,
|
||
p_werkplek_omschrijving IN VARCHAR2,
|
||
p_perslid_key IN NUMBER,
|
||
p_wp_expliciet IN NUMBER,
|
||
p_std_wp_ruimte_nr IN VARCHAR2,
|
||
p_errormsg OUT VARCHAR2,
|
||
p_errorhint OUT VARCHAR2);
|
||
|
||
PROCEDURE fac_gen_update_perslid (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_sleutelkolom IN VARCHAR2,
|
||
p_wp_mode IN NUMBER,
|
||
p_std_wp_ruimte_nr IN VARCHAR2);
|
||
|
||
PROCEDURE prs_del_perslid (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_perslid_key IN NUMBER,
|
||
p_wp_expliciet IN NUMBER);
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
|
||
/* Formatted on 3/18/2011 10:07:59 AM (QP5 v5.136.908.31019) */
|
||
CREATE OR REPLACE PACKAGE BODY AAXX
|
||
AS
|
||
-- PACKAGE voor de perslid import functions
|
||
|
||
|
||
|
||
PROCEDURE set_prs_kenmerk (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_niveau IN VARCHAR2,
|
||
p_kenmerk_key IN NUMBER,
|
||
p_link_key IN NUMBER,
|
||
p_kenmerk_waarde IN VARCHAR2)
|
||
AS
|
||
v_count NUMBER;
|
||
v_hint VARCHAR2 (100);
|
||
v_aktie VARCHAR2 (100);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (200);
|
||
BEGIN
|
||
v_hint :=
|
||
' kenmerk '
|
||
|| p_niveau
|
||
|| ' kenmerk_key: '
|
||
|| p_kenmerk_key
|
||
|| ' link: '
|
||
|| p_link_key
|
||
|| ' waarde: '
|
||
|| p_kenmerk_waarde;
|
||
v_aktie := 'Toevoegen';
|
||
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_kenmerklink
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerklink_niveau = p_niveau
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF p_kenmerk_waarde IS NULL
|
||
THEN
|
||
v_aktie := 'Verwijder';
|
||
|
||
DELETE prs_kenmerklink
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerklink_niveau = p_niveau
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder IS NULL;
|
||
ELSE
|
||
v_aktie := 'Wijzigen';
|
||
|
||
UPDATE prs_kenmerklink
|
||
SET prs_kenmerklink_waarde = p_kenmerk_waarde
|
||
WHERE prs_link_key = p_link_key
|
||
AND prs_kenmerklink_niveau = p_niveau
|
||
AND prs_kenmerk_key = p_kenmerk_key
|
||
AND prs_kenmerklink_verwijder IS NULL;
|
||
END IF;
|
||
ELSE
|
||
v_aktie := 'Toevoegen';
|
||
|
||
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
|
||
THEN
|
||
INSERT INTO PRS_KENMERKLINK (PRS_KENMERK_KEY,
|
||
PRS_LINK_KEY,
|
||
PRS_KENMERKLINK_NIVEAU,
|
||
PRS_KENMERKLINK_WAARDE)
|
||
VALUES (p_kenmerk_key,
|
||
p_link_key,
|
||
p_niveau,
|
||
p_kenmerk_waarde);
|
||
END IF;
|
||
END IF;
|
||
--fac.imp_writelog (p_applname, p_applrun, 'I', 'Verwerken kenmerk ' || v_aktie || ' kenmerk_key:' || p_kenmerk_key || ' waarde:'|| p_kenmerk_waarde || '-','');
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_applname,
|
||
p_applrun,
|
||
'E',
|
||
v_errormsg,
|
||
v_aktie || ' - ' || v_hint);
|
||
END;
|
||
|
||
|
||
PROCEDURE prs_set_werkplek (p_perslid_key IN NUMBER,
|
||
p_ruimte_key IN NUMBER,
|
||
p_werkplek_volgnr IN NUMBER,
|
||
p_werkplek_omschrijving IN VARCHAR2,
|
||
p_wp_expliciet IN NUMBER,
|
||
p_errormsg OUT VARCHAR2,
|
||
p_errorhint OUT VARCHAR2)
|
||
IS
|
||
v_ruimte_nr VARCHAR2 (10);
|
||
v_werkplek_volgnr NUMBER (3);
|
||
v_werkplek_omschrijving VARCHAR2 (30);
|
||
v_werkplek_key NUMBER (10);
|
||
v_perslidwerkplek_key NUMBER (10);
|
||
v_huidige_ruimte_key NUMBER (10);
|
||
v_huidige_pwp_key NUMBER (10);
|
||
v_huidige_wp_key NUMBER (10);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
-- bepaal het ruimte_nummer voor de omschrijving van de werkplek
|
||
SELECT alg_ruimte_nr
|
||
INTO v_ruimte_nr
|
||
FROM alg_ruimte
|
||
WHERE alg_ruimte_key = p_ruimte_key;
|
||
|
||
-- vind de huidige hoofdwerkplek
|
||
SELECT MAX (pwp.prs_perslidwerkplek_key)
|
||
INTO v_huidige_pwp_key
|
||
FROM prs_perslid p, prs_perslidwerkplek pwp, prs_werkplek wp
|
||
WHERE p.prs_perslid_key = p_perslid_key
|
||
AND p.prs_perslid_key = pwp.prs_perslid_key
|
||
AND pwp.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND COALESCE (wp.prs_werkplek_virtueel, 0) <> '1'
|
||
AND pwp.prs_perslidwerkplek_volgnr = 1
|
||
AND pwp.prs_perslidwerkplek_verwijder IS NULL;
|
||
|
||
-- met de bijbehorende werkplek
|
||
IF v_huidige_pwp_key IS NOT NULL
|
||
THEN
|
||
p_errorhint := 'Fout bij bepalen of persoon al een werkplek heeft';
|
||
|
||
SELECT pwp.prs_werkplek_key
|
||
INTO v_huidige_wp_key
|
||
FROM prs_perslidwerkplek pwp
|
||
WHERE pwp.prs_perslidwerkplek_key = v_huidige_pwp_key;
|
||
END IF;
|
||
|
||
|
||
IF p_wp_expliciet = 1
|
||
THEN
|
||
IF p_werkplek_omschrijving IS NULL
|
||
THEN
|
||
v_werkplek_omschrijving :=
|
||
v_ruimte_nr || '/' || TO_CHAR (v_werkplek_volgnr);
|
||
ELSE
|
||
v_werkplek_omschrijving := p_werkplek_omschrijving;
|
||
END IF;
|
||
|
||
p_errorhint := 'Fout bij bepalen werkplekvolgnr.';
|
||
|
||
IF (p_werkplek_volgnr IS NOT NULL)
|
||
THEN
|
||
BEGIN
|
||
-- expliciete werkplekken
|
||
SELECT prs_werkplek_key
|
||
INTO v_werkplek_key
|
||
FROM prs_v_aanwezigwerkplek
|
||
WHERE prs_alg_ruimte_key = p_ruimte_key
|
||
AND prs_werkplek_volgnr = p_werkplek_volgnr;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
-- voeg werkplek maar toe
|
||
INSERT INTO prs_werkplek (prs_werkplek_module,
|
||
prs_werkplek_volgnr,
|
||
prs_werkplek_omschrijving,
|
||
prs_alg_ruimte_key)
|
||
VALUES ('PRR',
|
||
v_werkplek_volgnr,
|
||
v_werkplek_omschrijving,
|
||
p_ruimte_key)
|
||
RETURNING prs_werkplek_key
|
||
INTO v_werkplek_key;
|
||
END;
|
||
|
||
IF v_huidige_wp_key <> v_werkplek_key OR v_huidige_wp_key IS NULL
|
||
THEN
|
||
IF v_huidige_pwp_key IS NOT NULL
|
||
THEN
|
||
p_errorhint := 'Omhangen perslidwerkplek record.';
|
||
|
||
-- verplaatsen van de persoon
|
||
UPDATE prs_perslidwerkplek
|
||
SET prs_werkplek_key = v_werkplek_key
|
||
WHERE prs_perslidwerkplek_key = v_huidige_pwp_key;
|
||
|
||
v_perslidwerkplek_key := v_huidige_pwp_key;
|
||
ELSE
|
||
-- toevoegen van perslidwerkplek record
|
||
p_errorhint := 'Toevoegen perslidwerkplek record.';
|
||
|
||
INSERT INTO prs_perslidwerkplek (prs_perslid_key,
|
||
prs_werkplek_key,
|
||
prs_perslidwerkplek_volgnr)
|
||
VALUES (p_perslid_key, v_werkplek_key, 1)
|
||
RETURNING prs_perslidwerkplek_key
|
||
INTO v_perslidwerkplek_key;
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
p_errormsg :=
|
||
'Geen werkplekvolgnummer gevonden bij expliciete werkplekken';
|
||
END IF;
|
||
ELSE -- impliciete werkplekken
|
||
-- kijk of de ruimte gelijk is aan de huidige ruimte
|
||
p_errorhint := 'Bepalen huidige ruimte.';
|
||
|
||
SELECT MAX (prs_alg_ruimte_key)
|
||
INTO v_huidige_ruimte_key
|
||
FROM prs_werkplek
|
||
WHERE prs_werkplek_key = v_huidige_wp_key;
|
||
|
||
IF v_huidige_ruimte_key <> p_ruimte_key
|
||
OR v_huidige_ruimte_key IS NULL
|
||
THEN
|
||
-- vind een lege werkplek in de huidige ruimte
|
||
p_errorhint := 'Bepalen lege werkplek in de ruimte.';
|
||
|
||
SELECT MIN (prs_werkplek_key)
|
||
INTO v_werkplek_key
|
||
FROM prs_werkplek w
|
||
WHERE (prs_werkplek_verwijder IS NOT NULL
|
||
OR NOT EXISTS
|
||
(SELECT prs_perslidwerkplek_key
|
||
FROM prs_perslidwerkplek pwp
|
||
WHERE pwp.prs_werkplek_key = w.prs_werkplek_key
|
||
AND pwp.prs_perslidwerkplek_verwijder IS NULL))
|
||
AND prs_alg_ruimte_key = p_ruimte_key;
|
||
|
||
IF v_werkplek_key IS NULL OR 1 = 1
|
||
THEN
|
||
-- geen lege werkplekken gevonden.
|
||
-- maak een nieuwe werkplek aan met als volgnummer het hoogste gevonden nummmer + 1
|
||
p_errorhint := 'Maak een nieuwe werkplek aan';
|
||
|
||
SELECT COALESCE (MAX (prs_werkplek_volgnr), 0) + 1
|
||
INTO v_werkplek_volgnr
|
||
FROM prs_werkplek
|
||
WHERE prs_alg_ruimte_key = p_ruimte_key;
|
||
|
||
INSERT INTO prs_werkplek (prs_werkplek_module,
|
||
prs_werkplek_volgnr,
|
||
prs_werkplek_omschrijving,
|
||
prs_alg_ruimte_key)
|
||
VALUES ('PRR',
|
||
v_werkplek_volgnr,
|
||
v_ruimte_nr || '/' || TO_CHAR (v_werkplek_volgnr),
|
||
p_ruimte_key)
|
||
RETURNING prs_werkplek_key
|
||
INTO v_werkplek_key;
|
||
ELSE
|
||
-- we hebben een werkplek gevonden waar nog geen personen aan gekoppeld waren
|
||
-- of die een verwijdervlag gezet heeft.
|
||
p_errorhint := 'Reanimeer een bestaande werkplek';
|
||
|
||
UPDATE prs_werkplek
|
||
SET prs_werkplek_verwijder = NULL
|
||
WHERE prs_werkplek_key = v_werkplek_key;
|
||
END IF;
|
||
|
||
-- nu hebben we een vrije werkplek
|
||
|
||
IF v_huidige_pwp_key IS NOT NULL
|
||
THEN
|
||
p_errorhint := 'Omhangen perslidwerkplek record.';
|
||
|
||
-- verplaatsen van de persoon
|
||
UPDATE prs_perslidwerkplek
|
||
SET prs_werkplek_key = v_werkplek_key
|
||
WHERE prs_perslidwerkplek_key = v_huidige_pwp_key;
|
||
|
||
v_perslidwerkplek_key := v_huidige_pwp_key;
|
||
ELSE
|
||
-- toevoegen van perslidwerkplek record
|
||
p_errorhint := 'Toevoegen perslidwerkplek record.';
|
||
|
||
INSERT INTO prs_perslidwerkplek (prs_perslid_key,
|
||
prs_werkplek_key,
|
||
prs_perslidwerkplek_volgnr)
|
||
VALUES (p_perslid_key, v_werkplek_key, 1)
|
||
RETURNING prs_perslidwerkplek_key
|
||
INTO v_perslidwerkplek_key;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- check of we nog iets moeten weggooien
|
||
IF v_huidige_pwp_key <> v_perslidwerkplek_key
|
||
OR (v_perslidwerkplek_key IS NULL AND v_huidige_pwp_key IS NOT NULL)
|
||
THEN
|
||
DELETE prs_perslidwerkplek
|
||
WHERE prs_perslidwerkplek_key = v_huidige_pwp_key;
|
||
END IF;
|
||
|
||
IF p_wp_expliciet <> 1
|
||
AND (v_huidige_wp_key <> v_werkplek_key
|
||
OR (v_werkplek_key IS NULL AND v_huidige_wp_key IS NOT NULL))
|
||
THEN
|
||
UPDATE prs_werkplek
|
||
SET prs_werkplek_verwijder = SYSDATE
|
||
WHERE prs_werkplek_key = v_huidige_wp_key;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
p_errormsg :=
|
||
' (ORACLE error number = <'
|
||
|| ORACLE_err_num
|
||
|| '> ORACLE error message = <'
|
||
|| ORACLE_err_mes
|
||
|| '>)';
|
||
END prs_set_werkplek;
|
||
|
||
|
||
PROCEDURE prs_update_werkplek (p_locatie_code IN VARCHAR2,
|
||
p_gebouw_code IN VARCHAR2,
|
||
p_verdieping_volgnr IN VARCHAR2,
|
||
p_ruimte_nr IN VARCHAR2,
|
||
p_werkplek_volgnr IN NUMBER,
|
||
p_werkplek_omschrijving IN VARCHAR2,
|
||
p_perslid_key IN NUMBER,
|
||
p_wp_expliciet IN NUMBER,
|
||
p_std_wp_ruimte_nr IN VARCHAR2,
|
||
p_errormsg OUT VARCHAR2,
|
||
p_errorhint OUT VARCHAR2)
|
||
IS
|
||
v_ruimte_key NUMBER (10);
|
||
v_locatie_key NUMBER (10);
|
||
v_gebouw_key NUMBER (10);
|
||
v_verdieping_key NUMBER (10);
|
||
v_ruimte_onveranderd NUMBER (1);
|
||
v_count NUMBER (10);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
p_errorhint :=
|
||
'Fout bij bepalen of persoon al een perslidwerkplek heeft';
|
||
v_ruimte_key := -1;
|
||
v_ruimte_onveranderd := 0;
|
||
|
||
-- laten we eerst maar even zoeken welke gegevens er boven tafel te krijgen zijn.
|
||
IF p_locatie_code IS NOT NULL
|
||
THEN
|
||
p_errorhint := 'Fout bij bepalen locatie [' || p_locatie_code || ']';
|
||
|
||
SELECT alg_locatie_key
|
||
INTO v_locatie_key
|
||
FROM alg_locatie
|
||
WHERE UPPER (alg_locatie_code) = UPPER (p_locatie_code)
|
||
AND alg_locatie_verwijder IS NULL;
|
||
|
||
IF p_gebouw_code IS NOT NULL
|
||
THEN
|
||
p_errorhint := 'Fout bij bepalen gebouw [' || p_gebouw_code || ']';
|
||
|
||
SELECT alg_gebouw_key
|
||
INTO v_gebouw_key
|
||
FROM alg_gebouw
|
||
WHERE UPPER (alg_gebouw_code) = UPPER (p_gebouw_code)
|
||
AND alg_gebouw_verwijder IS NULL
|
||
AND alg_locatie_key = v_locatie_key;
|
||
|
||
IF p_verdieping_volgnr IS NOT NULL
|
||
THEN
|
||
p_errorhint := 'Fout bij bepalen verdieping';
|
||
|
||
SELECT alg_verdieping_key
|
||
INTO v_verdieping_key
|
||
FROM alg_verdieping
|
||
WHERE alg_gebouw_key = v_gebouw_key
|
||
AND alg_verdieping_volgnr = p_verdieping_volgnr
|
||
AND alg_verdieping_verwijder IS NULL;
|
||
|
||
IF p_ruimte_nr IS NOT NULL
|
||
THEN
|
||
p_errorhint :=
|
||
'Fout bij bepalen ruimte ['
|
||
|| TO_CHAR (p_ruimte_nr)
|
||
|| ']';
|
||
|
||
SELECT alg_ruimte_key
|
||
INTO v_ruimte_key
|
||
FROM alg_ruimte
|
||
WHERE alg_verdieping_key = v_verdieping_key
|
||
AND alg_ruimte_verwijder IS NULL
|
||
AND UPPER (alg_ruimte_nr) = UPPER (p_ruimte_nr);
|
||
|
||
-- kijk of ik al een werkplek heb in deze kamer
|
||
SELECT COUNT (wp.prs_werkplek_key)
|
||
INTO v_count
|
||
FROM prs_werkplek wp, prs_perslidwerkplek pwp
|
||
WHERE pwp.prs_perslid_key = p_perslid_key
|
||
AND wp.prs_werkplek_key = pwp.prs_werkplek_key
|
||
AND wp.prs_alg_ruimte_key = v_ruimte_key
|
||
AND COALESCE (wp.prs_werkplek_virtueel, 0) = 0
|
||
AND pwp.prs_perslidwerkplek_verwijder IS NULL;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
v_ruimte_onveranderd := 0;
|
||
ELSE
|
||
v_ruimte_onveranderd := 1;
|
||
END IF;
|
||
ELSE
|
||
-- kijk of ik al een werkplek heb op deze verdieping
|
||
SELECT COUNT (wp.prs_werkplek_key)
|
||
INTO v_count
|
||
FROM prs_werkplek wp,
|
||
prs_perslidwerkplek pwp,
|
||
alg_ruimte r
|
||
WHERE pwp.prs_perslid_key = p_perslid_key
|
||
AND wp.prs_werkplek_key = pwp.prs_werkplek_key
|
||
AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
|
||
AND COALESCE (wp.prs_werkplek_virtueel, 0) = 0
|
||
AND r.alg_verdieping_key = v_verdieping_key
|
||
AND pwp.prs_perslidwerkplek_verwijder IS NULL;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
-- vind de standaardruimte binnen de gevonden verdieping
|
||
SELECT MAX (alg_ruimte_key)
|
||
INTO v_ruimte_key
|
||
FROM alg_ruimte
|
||
WHERE alg_verdieping_key = v_verdieping_key
|
||
AND alg_ruimte_verwijder IS NULL
|
||
AND alg_ruimte_nr = p_std_wp_ruimte_nr;
|
||
ELSE
|
||
v_ruimte_onveranderd := 1;
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
-- kijk of ik al een werkplek heb in dit gebouw
|
||
SELECT COUNT (wp.prs_werkplek_key)
|
||
INTO v_count
|
||
FROM prs_werkplek wp,
|
||
prs_perslidwerkplek pwp,
|
||
alg_ruimte r,
|
||
alg_verdieping v
|
||
WHERE pwp.prs_perslid_key = p_perslid_key
|
||
AND wp.prs_werkplek_key = pwp.prs_werkplek_key
|
||
AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
|
||
AND COALESCE (wp.prs_werkplek_virtueel, 0) = 0
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = v_gebouw_key
|
||
AND pwp.prs_perslidwerkplek_verwijder IS NULL;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
-- vind de standaardruimte binnen het gevonden gebouw
|
||
SELECT MAX (alg_ruimte_key)
|
||
INTO v_ruimte_key
|
||
FROM alg_ruimte r, alg_verdieping v
|
||
WHERE v.alg_gebouw_key = v_gebouw_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_verwijder IS NULL
|
||
AND r.alg_ruimte_nr = p_std_wp_ruimte_nr;
|
||
ELSE
|
||
v_ruimte_onveranderd := 1;
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
-- kijk of ik al een werkplek heb op deze locatie
|
||
SELECT COUNT (wp.prs_werkplek_key)
|
||
INTO v_count
|
||
FROM prs_werkplek wp,
|
||
prs_perslidwerkplek pwp,
|
||
alg_ruimte r,
|
||
alg_verdieping v,
|
||
alg_gebouw g
|
||
WHERE pwp.prs_perslid_key = p_perslid_key
|
||
AND wp.prs_werkplek_key = pwp.prs_werkplek_key
|
||
AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
|
||
AND COALESCE (wp.prs_werkplek_virtueel, 0) = 0
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.alg_locatie_key = v_locatie_key
|
||
AND pwp.prs_perslidwerkplek_verwijder IS NULL;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
-- vind de standaardruimte binnen de gevonden locatie
|
||
SELECT MAX (alg_ruimte_key)
|
||
INTO v_ruimte_key
|
||
FROM alg_ruimte r, alg_verdieping v, alg_gebouw g
|
||
WHERE g.alg_locatie_key = v_locatie_key
|
||
AND g.alg_gebouw_key = v.alg_gebouw_key
|
||
AND v.alg_verdieping_key = r.alg_verdieping_key
|
||
AND r.alg_ruimte_verwijder IS NULL
|
||
AND r.alg_ruimte_nr = p_std_wp_ruimte_nr;
|
||
ELSE
|
||
v_ruimte_onveranderd := 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- we hebben nu een ruimte_key voor de nieuwe werkplek
|
||
IF v_ruimte_onveranderd = 0
|
||
THEN
|
||
prs_set_werkplek (p_perslid_key,
|
||
v_ruimte_key,
|
||
p_werkplek_volgnr,
|
||
p_werkplek_omschrijving,
|
||
p_wp_expliciet,
|
||
p_errormsg,
|
||
p_errorhint);
|
||
END IF;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
p_errormsg :=
|
||
' (ORACLE error number = <'
|
||
|| ORACLE_err_num
|
||
|| '> ORACLE error message = <'
|
||
|| ORACLE_err_mes
|
||
|| '>)';
|
||
END prs_update_werkplek;
|
||
|
||
|
||
--
|
||
-- p_wp_mode (0 geen werkplekken 1, impliciet 2 expliciet)
|
||
--
|
||
PROCEDURE fac_gen_update_perslid (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_sleutelkolom IN VARCHAR2,
|
||
p_wp_mode IN NUMBER,
|
||
p_std_wp_ruimte_nr IN VARCHAR2)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
|
||
v_count NUMBER (10);
|
||
v_ongeldig NUMBER (1);
|
||
v_count_update NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count_tot NUMBER (10);
|
||
v_wpcount_error NUMBER (10);
|
||
v_wp_expliciet NUMBER (10);
|
||
|
||
--
|
||
v_perslid_key NUMBER (10);
|
||
v_afdeling_key NUMBER (10);
|
||
v_srtperslid_key NUMBER (10);
|
||
|
||
|
||
CURSOR cSPERSLID
|
||
IS
|
||
SELECT MIN (prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
|
||
FROM fac_imp_perslid i
|
||
WHERE NOT EXISTS
|
||
(SELECT prs_srtperslid_key
|
||
FROM prs_srtperslid sp
|
||
WHERE UPPER (sp.prs_srtperslid_omschrijving) =
|
||
UPPER (i.prs_srtperslid_omschrijving))
|
||
GROUP BY UPPER (prs_srtperslid_omschrijving);
|
||
|
||
recSPersLid cSPersLid%ROWTYPE;
|
||
|
||
CURSOR cPERSLID
|
||
IS
|
||
SELECT * FROM FAC_IMP_PERSLID;
|
||
|
||
recPersLid cPersLid%ROWTYPE;
|
||
BEGIN
|
||
DELETE imp_log
|
||
WHERE imp_log_applicatie = p_applname;
|
||
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
v_wpcount_error := 0;
|
||
|
||
FOR recSPersLid IN cSPersLid
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '';
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_aanduiding := recSPersLid.PRS_SRTPERSLID_OMSCHRIJVING;
|
||
|
||
v_errorhint := 'Fout bij toevoegen functie';
|
||
|
||
INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
|
||
VALUES (recSPersLid.prs_srtperslid_omschrijving);
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
' (ORACLE error number = <'
|
||
|| ORACLE_err_num
|
||
|| '> ORACLE error message = <'
|
||
|| ORACLE_err_mes
|
||
|| '>)';
|
||
|
||
fac.imp_writelog (p_applname,
|
||
p_applrun,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint);
|
||
|
||
COMMIT; -- tbv logging
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_applname,
|
||
p_applrun,
|
||
'S',
|
||
'Personeelsfunctie: toegevoegde regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
'');
|
||
|
||
fac.imp_writelog (
|
||
p_applname,
|
||
p_applrun,
|
||
'S',
|
||
'Personeelsfunctie: toegevoegde regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
'');
|
||
COMMIT; -- logging
|
||
|
||
|
||
v_count_update := 0;
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
FOR recPersLid IN cPersLid
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding := '';
|
||
v_errormsg := '';
|
||
v_errorhint := '';
|
||
v_count_tot := v_count_tot + 1;
|
||
|
||
v_aanduiding :=
|
||
recPersLid.prs_perslid_naam
|
||
|| '|'
|
||
|| recPersLid.prs_perslid_voornaam
|
||
|| '| ';
|
||
v_errormsg := '';
|
||
|
||
v_errorhint := 'Fout bij bepalen functie';
|
||
|
||
SELECT prs_srtperslid_key
|
||
INTO v_srtperslid_key
|
||
FROM prs_srtperslid
|
||
WHERE prs_srtperslid_verwijder IS NULL
|
||
AND UPPER (prs_srtperslid_omschrijving) =
|
||
UPPER (recPersLid.prs_srtperslid_omschrijving);
|
||
|
||
v_errorhint :=
|
||
'Afdeling niet gevonden ['
|
||
|| recPersLid.prs_afdeling_naam
|
||
|| ']';
|
||
|
||
SELECT prs_afdeling_key
|
||
INTO v_afdeling_key
|
||
FROM prs_afdeling
|
||
WHERE UPPER (prs_afdeling_naam) =
|
||
UPPER (recPersLid.prs_afdeling_naam)
|
||
AND prs_afdeling_verwijder IS NULL;
|
||
|
||
-- p_sleutelkolom
|
||
-- NR = prs_perslid_nr
|
||
-- EMAIL = prs_perslid_email
|
||
-- LOGIN = prs_perslid_oslogin
|
||
v_errorhint := 'Kijken of de persoon al bestaat';
|
||
|
||
SELECT MAX (prs_perslid_key), COUNT ( * )
|
||
INTO v_perslid_key, v_count
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND ( (p_sleutelkolom IS NULL
|
||
AND UPPER (prs_perslid_naam) =
|
||
UPPER (recPersLid.prs_perslid_naam)
|
||
AND UPPER (prs_perslid_voornaam) =
|
||
UPPER (recPersLid.prs_perslid_voornaam))
|
||
OR (UPPER (p_sleutelkolom) = 'NR'
|
||
AND UPPER (prs_perslid_nr) =
|
||
UPPER (recPersLid.prs_perslid_nr)
|
||
OR UPPER (p_sleutelkolom) = 'EMAIL'
|
||
AND UPPER (prs_perslid_email) =
|
||
UPPER (recPersLid.prs_perslid_email)
|
||
OR UPPER (p_sleutelkolom) = 'LOGIN'
|
||
AND UPPER (prs_perslid_oslogin) =
|
||
UPPER (recPersLid.prs_perslid_oslogin)));
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen persoon';
|
||
|
||
INSERT INTO prs_perslid (prs_perslid_module,
|
||
prs_srtperslid_key,
|
||
prs_afdeling_key,
|
||
prs_perslid_naam,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel,
|
||
prs_perslid_email,
|
||
prs_perslid_nr,
|
||
prs_perslid_titel,
|
||
prs_perslid_oslogin)
|
||
VALUES ('PRS',
|
||
v_srtperslid_key,
|
||
v_afdeling_key,
|
||
recPersLid.prs_perslid_naam,
|
||
recPersLid.prs_perslid_voorletters,
|
||
recPersLid.prs_perslid_tussenvoegsel,
|
||
recPersLid.prs_perslid_voornaam,
|
||
recPersLid.prs_perslid_telefoonnr,
|
||
recPersLid.prs_perslid_mobiel,
|
||
recPersLid.prs_perslid_email,
|
||
recPersLid.prs_perslid_nr,
|
||
recPersLid.prs_perslid_titel,
|
||
recPersLid.prs_perslid_oslogin)
|
||
RETURNING prs_perslid_key
|
||
INTO v_perslid_key;
|
||
|
||
prs.setpassword(v_perslid_key, recPersLid.prs_perslid_wachtwoord);
|
||
|
||
COMMIT;
|
||
v_count_update := v_count_update + 1;
|
||
ELSIF v_count = 1
|
||
THEN
|
||
UPDATE prs_perslid
|
||
SET prs_srtperslid_key = v_srtperslid_key,
|
||
prs_afdeling_key = v_afdeling_key,
|
||
prs_perslid_naam = recPersLid.prs_perslid_naam,
|
||
prs_perslid_voorletters =
|
||
recPersLid.prs_perslid_voorletters,
|
||
prs_perslid_tussenvoegsel =
|
||
recPersLid.prs_perslid_tussenvoegsel,
|
||
prs_perslid_voornaam = recPersLid.prs_perslid_voornaam,
|
||
prs_perslid_nr = recPersLid.prs_perslid_nr,
|
||
prs_perslid_titel = recPersLid.prs_perslid_titel
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
|
||
IF recPersLid.prs_perslid_telefoonnr IS NOT NULL
|
||
THEN
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_telefoonnr =
|
||
recPersLid.prs_perslid_telefoonnr
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
END IF;
|
||
|
||
IF recPersLid.prs_perslid_mobiel IS NOT NULL
|
||
THEN
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_mobiel = recPersLid.prs_perslid_mobiel
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
END IF;
|
||
|
||
IF recPersLid.prs_perslid_email IS NOT NULL
|
||
THEN
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_email = recPersLid.prs_perslid_email
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
END IF;
|
||
|
||
IF recPersLid.prs_perslid_oslogin IS NOT NULL
|
||
THEN
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_oslogin = recPersLid.prs_perslid_oslogin
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
END IF;
|
||
|
||
IF recPersLid.prs_perslid_wachtwoord IS NOT NULL
|
||
THEN
|
||
prs.setpassword(v_perslid_key, recPersLid.prs_perslid_wachtwoord);
|
||
END IF;
|
||
END IF;
|
||
|
||
COMMIT; -- persoon in ieder geval toegevoegd.
|
||
|
||
IF p_wp_mode <> 0
|
||
THEN
|
||
IF p_wp_mode = 1
|
||
THEN
|
||
v_wp_expliciet := 0;
|
||
ELSE
|
||
v_wp_expliciet := 1;
|
||
END IF;
|
||
|
||
-- Werkplekken
|
||
v_aanduiding :=
|
||
recPersLid.PRS_PERSLID_NAAM
|
||
|| '|'
|
||
|| recPersLid.PRS_PERSLID_VOORNAAM
|
||
|| '|'
|
||
|| recPersLid.alg_locatie_code
|
||
|| '|'
|
||
|| recPersLid.alg_gebouw_code
|
||
|| '|'
|
||
|| recPersLid.alg_verdieping_volgnr
|
||
|| '|'
|
||
|| recPersLid.alg_ruimte_nr
|
||
|| '| ';
|
||
v_errormsg := '';
|
||
|
||
prs_update_werkplek (recPersLid.alg_locatie_code,
|
||
recPersLid.alg_gebouw_code,
|
||
recPersLid.alg_verdieping_volgnr,
|
||
recPersLid.alg_ruimte_nr,
|
||
recPersLid.prs_werkplek_volgnr,
|
||
recPersLid.prs_werkplek_omschrijving,
|
||
v_perslid_key,
|
||
v_wp_expliciet,
|
||
p_std_wp_ruimte_nr,
|
||
v_errormsg,
|
||
v_errorhint);
|
||
|
||
IF v_errormsg IS NOT NULL
|
||
THEN
|
||
v_wpcount_error := v_wpcount_error + 1;
|
||
fac.imp_writelog (p_applname,
|
||
p_applrun,
|
||
'W',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint);
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
' (ORACLE error number = <'
|
||
|| ORACLE_err_num
|
||
|| '> ORACLE error message = <'
|
||
|| ORACLE_err_mes
|
||
|| '>)';
|
||
|
||
fac.imp_writelog (p_applname,
|
||
p_applrun,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint);
|
||
|
||
COMMIT; -- tbv logging
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (
|
||
p_applname,
|
||
p_applrun,
|
||
'S',
|
||
'Persoon: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
'');
|
||
|
||
fac.imp_writelog (
|
||
p_applname,
|
||
p_applrun,
|
||
'S',
|
||
'Persoon: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
'');
|
||
|
||
fac.imp_writelog (
|
||
p_applname,
|
||
p_applrun,
|
||
'S',
|
||
'Werkplek: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_wpcount_error),
|
||
'');
|
||
END fac_gen_update_perslid;
|
||
|
||
|
||
PROCEDURE prs_del_perslid (p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_perslid_key IN NUMBER,
|
||
p_wp_expliciet IN NUMBER)
|
||
IS
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_errorhint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
v_count NUMBER (10);
|
||
|
||
--
|
||
v_perslid_key NUMBER (10);
|
||
v_perslid_naam VARCHAR (100);
|
||
v_perslid_nr VARCHAR (30);
|
||
BEGIN
|
||
BEGIN
|
||
v_errormsg := 'Verwijderen van de persoon is NIET gelukt';
|
||
v_errorhint :=
|
||
'Heeft de persoon met prs_perslid_key '
|
||
|| TO_CHAR (p_perslid_key)
|
||
|| ' historie?';
|
||
|
||
SELECT prs_perslid_naam_full, prs_perslid_nr
|
||
INTO v_perslid_naam, v_perslid_nr
|
||
FROM prs_perslid p, prs_v_perslid_fullnames pf
|
||
WHERE p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_perslid_key = p_perslid_key;
|
||
|
||
-- *** Budgethouderschap ***
|
||
-- Voor hoeveel kostenplaatsen is deze persoon budgethouder?
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_kostenplaats
|
||
WHERE prs_perslid_key = p_perslid_key;
|
||
|
||
IF (v_count > 0)
|
||
THEN
|
||
UPDATE prs_kostenplaats
|
||
SET prs_perslid_key = NULL
|
||
WHERE prs_perslid_key = p_perslid_key;
|
||
|
||
fac.imp_writelog (
|
||
p_applname,
|
||
p_applrun,
|
||
'I',
|
||
'Budgethouderschap van te verwijderen persoon ('
|
||
|| v_count
|
||
|| ' stuks) vervallen.',
|
||
'Naam/persoonsnr: ' || v_perslid_naam || '/' || v_perslid_nr);
|
||
END IF;
|
||
|
||
-- *** Vervangers ***
|
||
-- koppelingen met vervangers dienen ook verwijderd te worden
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_collega
|
||
WHERE prs_perslid_key = p_perslid_key
|
||
OR prs_perslid_key_alt = p_perslid_key;
|
||
|
||
IF (v_count > 0)
|
||
THEN
|
||
DELETE FROM prs_collega
|
||
WHERE prs_perslid_key = p_perslid_key
|
||
OR prs_perslid_key_alt = p_perslid_key;
|
||
|
||
fac.imp_writelog (
|
||
p_applname,
|
||
p_applrun,
|
||
'I',
|
||
'Te verwijderen persoon heeft vervanger(s). Koppeling(en) verwijderd.',
|
||
'Naam/persoonsnr: ' || v_perslid_naam || '/' || v_perslid_nr);
|
||
END IF;
|
||
|
||
-- *** werkplekken ***
|
||
IF p_wp_expliciet = 0
|
||
THEN
|
||
UPDATE prs_werkplek wp
|
||
SET prs_werkplek_verwijder = SYSDATE
|
||
WHERE EXISTS
|
||
(SELECT prs_perslidwerkplek_key
|
||
FROM prs_perslidwerkplek pwp
|
||
WHERE wp.prs_werkplek_key = pwp.prs_werkplek_key
|
||
AND pwp.prs_perslid_key = p_perslid_key);
|
||
END IF;
|
||
|
||
DELETE prs_perslidwerkplek
|
||
WHERE prs_perslid_key = p_perslid_key;
|
||
|
||
-- *** Verplichtingen ***
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_v_verplichting_refcheck vp
|
||
WHERE vp.prs_perslid_key = p_perslid_key;
|
||
|
||
IF v_count = 0
|
||
THEN
|
||
-- Persoon heeft geen enkele (actuele of historische) verplichting
|
||
v_errorhint :=
|
||
'Verwijderen van persoon met key ' || TO_CHAR (v_perslid_key);
|
||
|
||
DELETE FROM prs_perslid
|
||
WHERE prs_perslid_key = p_perslid_key;
|
||
|
||
fac.imp_writelog (
|
||
p_applname,
|
||
p_applrun,
|
||
'I',
|
||
'Persoon verwijderd.',
|
||
'Achternaam/persoonsnr: '
|
||
|| v_perslid_naam
|
||
|| '/'
|
||
|| v_perslid_nr);
|
||
ELSE
|
||
-- Controleer of er ACTUELE verplichtingen zijn
|
||
SELECT COUNT ( * )
|
||
INTO v_count
|
||
FROM prs_v_verplichting_keys vp
|
||
WHERE vp.prs_perslid_key = p_perslid_key;
|
||
|
||
IF v_count > 0
|
||
THEN
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_naam =
|
||
SUBSTR ('INACTIEF:' || prs_perslid_naam, 1, 30),
|
||
prs_perslid_oslogin = NULL
|
||
WHERE prs_perslid_key = p_perslid_key
|
||
AND prs_perslid_naam NOT LIKE 'INACTIEF:%';
|
||
|
||
fac.imp_writelog (
|
||
p_applname,
|
||
p_applrun,
|
||
'I',
|
||
'Persoon als INACTIEF gemarkeerd of was al INACTIEF gemarkeerd.',
|
||
'Achternaam/persoonsnr: '
|
||
|| v_perslid_naam
|
||
|| '/'
|
||
|| v_perslid_nr);
|
||
ELSE
|
||
BEGIN
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_verwijder = SYSDATE
|
||
WHERE prs_perslid_key = p_perslid_key;
|
||
|
||
fac.imp_writelog (
|
||
p_applname,
|
||
p_applrun,
|
||
'I',
|
||
'Persoon ge<67>nactiveerd.',
|
||
'Achternaam/persoonsnr: '
|
||
|| v_perslid_naam
|
||
|| '/'
|
||
|| v_perslid_nr);
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
-- Kennelijk heeft de persoon toch ernstige verplichtingen
|
||
v_errorhint :=
|
||
'Persoon heeft nog (max. '
|
||
|| TO_CHAR (v_count)
|
||
|| ') verplichtingen. Naam/persoonsnr: '
|
||
|| v_perslid_naam
|
||
|| '/'
|
||
|| v_perslid_nr;
|
||
fac.imp_writelog (p_applname,
|
||
p_applrun,
|
||
'I',
|
||
'Inactiveren persoon is niet gelukt',
|
||
v_errorhint);
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
'(ORACLE error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_applname,
|
||
p_applrun,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint);
|
||
END;
|
||
END prs_del_perslid;
|
||
END;
|
||
/ |