145 lines
5.1 KiB
SQL
145 lines
5.1 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- In dit script worden obv een importbestand (fac_imp_perslid) gegevens aangepast in bulk.
|
|
-- Er wordt daarbij obv het oude personeelsnummer een nieuw personeelsnummer bepaalt (was-wordt) en tevens worden emailadres aangepast en een kenmerk (Indirect) gevuld.
|
|
-- Dat wordt dan in bulk voor 406 personen gedaan, ipv handmatig.
|
|
-- Update: nog eens 75 personen erbij, dus 481 personen
|
|
--
|
|
--
|
|
DEFINE thisfile = 'VEBE#75918.SQL'
|
|
DEFINE dbuser = '^VEBE'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
|
SPOOL &fcltlogfile
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
PROMPT &fcltcusterr
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
DECLARE
|
|
CURSOR c IS
|
|
SELECT p.prs_perslid_key,
|
|
p.prs_perslid_email
|
|
AS email_oud,
|
|
p.prs_perslid_oslogin,
|
|
i.prs_perslid_nr
|
|
AS nr_oud,
|
|
i.prs_perslid_email
|
|
AS email_nieuw,
|
|
i.prs_kenmerk1
|
|
AS nr_nieuw,
|
|
i.prs_kenmerk2,
|
|
UPPER (SUBSTR (i.prs_perslid_email, 0, 30)),
|
|
DECODE (
|
|
(SELECT TO_NUMBER (prs_kenmerklink_waarde)
|
|
FROM prs_kenmerklink
|
|
WHERE prs_link_key = p.prs_perslid_key
|
|
AND prs_kenmerk_key = 1000
|
|
AND prs_kenmerklink_verwijder IS NULL
|
|
AND prs_kenmerklink_niveau = 'P'),
|
|
1, 1,
|
|
0)
|
|
AS indirect_oud,
|
|
(DECODE (UPPER (prs_kenmerk2), 'INDIRECT', 1, 0))
|
|
AS indirect_nieuw,
|
|
(SELECT TO_NUMBER (prs_kenmerklink_key)
|
|
FROM prs_kenmerklink
|
|
WHERE prs_link_key = p.prs_perslid_key
|
|
AND prs_kenmerk_key = 1000
|
|
AND prs_kenmerklink_verwijder IS NULL
|
|
AND prs_kenmerklink_niveau = 'P')
|
|
AS indirect_key
|
|
FROM fac_imp_perslid i, prs_perslid p
|
|
WHERE p.prs_perslid_nr = i.prs_perslid_nr;
|
|
BEGIN
|
|
FOR rec IN c
|
|
LOOP
|
|
BEGIN
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_nr = rec.nr_nieuw,
|
|
prs_perslid_email = rec.email_nieuw,
|
|
prs_perslid_oslogin =
|
|
UPPER (SUBSTR (rec.email_nieuw, 0, 30))
|
|
WHERE prs_perslid_key = rec.prs_perslid_key;
|
|
|
|
fac.trackaction (
|
|
'PRSUPD',
|
|
rec.prs_perslid_key,
|
|
NULL,
|
|
NULL,
|
|
'E-mail: '
|
|
|| rec.email_oud
|
|
|| ' --> '
|
|
|| rec.email_nieuw
|
|
|| CHR (10)
|
|
|| 'Login: '
|
|
|| rec.prs_perslid_oslogin
|
|
|| ' --> '
|
|
|| UPPER (SUBSTR (rec.email_nieuw, 0, 30))
|
|
|| CHR (10)
|
|
|| 'NR: '
|
|
|| rec.nr_oud
|
|
|| ' --> '
|
|
|| rec.nr_nieuw);
|
|
|
|
--Indien nu indirect, maar beoogd direct, dan kenmerk verwijderen
|
|
IF rec.indirect_oud = 1 AND rec.indirect_nieuw = 0
|
|
THEN
|
|
UPDATE prs_kenmerklink
|
|
SET prs_kenmerklink_verwijder = SYSDATE
|
|
WHERE prs_kenmerklink_key = rec.indirect_key;
|
|
|
|
fac.trackaction ('PRSUPD',
|
|
rec.prs_perslid_key,
|
|
NULL,
|
|
NULL,
|
|
'Persoon gewijzigd: Indirect --> Direct');
|
|
END IF;
|
|
|
|
--Indien nu direct, maar beoogd indirect, dan kenmerk toevoegen
|
|
IF rec.indirect_oud = 0 AND rec.indirect_nieuw = 1
|
|
THEN
|
|
INSERT INTO prs_kenmerklink (prs_link_key,
|
|
prs_kenmerklink_niveau,
|
|
prs_kenmerk_key,
|
|
prs_kenmerklink_waarde,
|
|
prs_kenmerklink_aanmaak)
|
|
VALUES (rec.prs_perslid_key,
|
|
'P',
|
|
1000,
|
|
1,
|
|
SYSDATE);
|
|
|
|
fac.trackaction ('PRSUPD',
|
|
rec.prs_perslid_key,
|
|
NULL,
|
|
NULL,
|
|
'Persoon gewijzigd: Direct --> Indirect');
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
END;
|
|
/
|
|
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 1); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile
|