Files
Database/_UP/424TO425.SRC
2003-01-15 13:15:10 +00:00

1495 lines
58 KiB
Plaintext

SET TERMOUT ON
SET FEEDBACK OFF
SET ECHO OFF
--
-- Update script van Facilitor versie 4.24 naar 4.25
--
/*
* Dit script wordt geprecompileerd dus is het mogelijk (verplicht)
* om #ifdef's te gebruiken voor de diverse modules.
*
* Gebruik daar waar in de *.SQL-variant geen commentaar-tekst moet komen de
* C-style van uitcommentarieren. Daar waar WEL tekst in de uitvoer moet komen
* moet -- gebruikt worden.
*/
#include "modules.h"
#include "comsql.h"
#include "INS\inssql.h"
/*
* Test eerst of de vorige versie van module FAC zoals genoemd in tabel
* fac_module wel het te verwachten versienummer heeft
* als dat niet zo is dient de gebruiker het script ZELF af te breken middels
* control-c.
* Als dat wel zo is vervolgt het script en zal aan het einde van het script
* het interne versienummer en de datum worden bijgewerkt.
*/
/* !!BELANGRIJK!!
* Als er bij de upgrade een NIEUWE tabel of view wordt gecreeerd, moeten ook
* de daarvoor benodigde GRANTS en SYNONYMS worden geregeld!!!
* Dit doen we in de $..after.sql, die ook hier wordt gegenereerd.
*/
#ifdef MASTER
SPOOL OFF
SET HEADING OFF
CLEAR SCREEN
PROMPT ***********************************************************************
PROMPT
PROMPT UPGRADE SCRIPT van Facilitor versie 04.24 naar 4.25
PROMPT
SELECT 'De huidige versie van Facilitor zou moeten zijn 04.24 en is: '
|| fac_module_version
FROM fac_module
WHERE fac_module_name='FAC';
PROMPT
PROMPT Indien de huidige versie NIET de verwachte versie is mag dit script
PROMPT niet worden gerund! In dit geval dient het script nu middels
PROMPT CONTROL-C te worden afgebroken.
PROMPT
PROMPT Indien de versies overeenkomen dient nu ENTER te worden gedrukt...
PROMPT
PROMPT ***********************************************************************
ACCEPT nix PROMPT ''
PROMPT
PROMPT De upgrade wordt vervolgd. Even geduld a.u.b...
PROMPT
SET TERMOUT OFF
SET HEADING OFF
SET FEEDBACK OFF
SET ECHO OFF
SET VERIFY OFF
SET LINESIZE 1000
SET SERVEROUTPUT ON;
SPOOL $424to425.SQL
PROMPT SET ECHO ON
PROMPT SPOOL $424to425.LST;
UPDMOD(FAC,424to425)
UPDMOD(ALG,424to425)
UPDMOD(PRS,424to425)
UPDMOD(INS,424to425)
UPDMOD(MLD,424to425)
UPDMOD(CAD,424to425)
UPDMOD(AKZ,424to425)
UPDMOD(PRJ,424to425)
UPDMOD(RES,424to425)
UPDMOD(BES,424to425)
UPDMOD(BEZ,424to425)
UPDMOD(SCH,424to425)
UPDMOD(SLE,424to425)
UPDMOD(CNT,424to425)
UPDMOD(WEB,424to425)
UPDMOD(PRA,424to425)
UPDATE_VERSION('04.25');
COMMIT;
PROMPT SPOOL OFF;
PROMPT START $424to425after.SQL
SPOOL OFF
SPOOL $424to425after.sql
PROMPT SET ECHO ON
PROMPT SPOOL $424to425after.lst
-- Geef execute rechten aan de laagste role voor alle stored packages, procedures etc.
-- Bedoeld voor de nieuwe, maar is niet erg voor de oude.
SELECT DISTINCT 'GRANT execute ON ' || US.name ||' TO '||USER||'_ALG_SMALL_ROLE;'
FROM user_source US;
-- Geef alle rechten aan de laagste role voor alle sequences
-- Bedoeld voor de nieuwe, maar is niet erg voor de oude.
SELECT 'GRANT all ON ' || USEQ.sequence_name ||' TO '||USER||'_ALG_SMALL_ROLE;'
FROM user_sequences USEQ;
/* ADD SYNONYMS ROUTINE HERE FOR ALL SECONDARY USERS */
PROMPT SPOOL OFF
SPOOL OFF
START $424to425.SQL
SET ECHO OFF
PROMPT De upgrade is gereed.. Controleer de LST-files.
#endif // MASTER
/****************************** PLAATS HIERONDER DE UPDATES ******************************/
#ifdef ALG
#endif //ALG
#ifdef INS
#endif //INS
#ifdef FAC
UPDATE FAC_MESSAGE
SET FAC_MESSAGE_TEXT = 'Facilitor 4.25'
WHERE FAC_MESSAGE_CODE = 'FAC_M002';
UPDATE FAC_MESSAGE
SET FAC_MESSAGE_TEXT = 'Welkom bij Facilitor 4.25'
WHERE FAC_MESSAGE_CODE = 'FAC_M035';
#endif //FAC
#ifdef PRS
CREATE_VIEW (prs_v_perslid_print,PRS_NORMAAL_PRIVILEGE) AS
SELECT PRS_P.prs_perslid_key
,PRS_P.prs_perslid_naam
,PRS_P.prs_perslid_voorletters
,PRS_P.prs_perslid_voornaam
,PRS_P.prs_perslid_initialen
,PRS_P.prs_perslid_nr
,PRS_A.prs_afdeling_naam
,PRS_P.prs_perslid_telefoonnr
,PRS_SP.prs_srtperslid_omschrijving
,PRS_E.prs_eenheid_code prs_afdeling_eenheid
,PRS_A.prs_afdeling_kostenplaats
FROM prs_v_aanwezigperslid PRS_P
,prs_v_aanwezigafdeling PRS_A
,prs_v_aanwezigsrtperslid PRS_SP
,prs_eenheid PRS_E
WHERE PRS_P.prs_afdeling_key = PRS_A.prs_afdeling_key (+)
AND PRS_A.prs_eenheid_key=PRS_E.prs_eenheid_key (+)
AND PRS_SP.prs_srtperslid_key(+) = PRS_P.prs_srtperslid_key;
#endif //PRS
#ifdef MLD
CREATE_VIEW(mld_v_melding_status_gegevens,MLD_NORMAAL_PRIVILEGE) AS
SELECT M.mld_melding_key,
M.mld_melding_status,
S.mld_statuses_omschrijving,
DECODE(mld_melding_status,
1,mld_melding_afgewezen,
2,mld_melding_datum,
3,mld_melding_ingezien,
4,mld_melding_geaccepteerd,
5,mld_melding_afgemeld,
6,mld_melding_verwerkt,
7,mld_melding_geaccepteerd,
NULL) mld_melding_lastdate,
M.mld_melding_datum,
'['||MD.ins_discipline_omschrijving||'/'||SM.mld_stdmelding_omschrijving||'] '||m.mld_melding_omschrijving mld_melding_omschrijving,
AF.prs_afdeling_key,AF.prs_afdeling_omschrijving,
P.prs_perslid_key,P.prs_perslid_naam,
M.mld_alg_onroerendgoed_keys,
L.alg_locatie_code||
DECODE(G.alg_gebouw_code,NULL,'','-'||G.alg_gebouw_code)||
DECODE(G.alg_verdieping_volgnr,NULL,'','-'||G.alg_verdieping_volgnr)||
DECODE(G.alg_ruimte_nr,NULL,'','-'||G.alg_ruimte_nr)||
DECODE(G.alg_terreinsector_code,NULL,'','-'||G.alg_terreinsector_code) alg_plaats_omschrijving,
M.mld_stdmelding_key,
E.prs_eenheid_upper,
AF.prs_eenheid_key,
M.mld_alg_locatie_key,
M.mld_melding_melder_naam,
AF.prs_afdeling_kostenplaats,
M.mld_ins_discipline_key,
P.prs_perslid_upper,
AF.prs_afdeling_upper,
M.mld_melding_username,
G.alg_gebouw_key,
G.alg_verdieping_key,
G.alg_ruimte_key,
P.prs_perslid_voorletters,
P.prs_perslid_voornaam
FROM mld_melding M,
mld_statuses S,
mld_discipline MD,
mld_stdmelding SM,
prs_afdeling AF,
prs_perslid P,
prs_eenheid E,
alg_v_allonrgoed_gegevens G,
alg_locatie L
WHERE M.mld_melding_status=S.mld_statuses_key
AND M.mld_ins_discipline_key=MD.ins_discipline_key
AND M.mld_stdmelding_key=SM.mld_stdmelding_key
AND M.prs_afdeling_key=AF.prs_afdeling_key (+)
AND M.prs_perslid_key=P.prs_perslid_key (+)
AND AF.prs_eenheid_key=E.prs_eenheid_key (+)
AND M.mld_alg_locatie_key=L.alg_locatie_key (+)
AND M.mld_alg_onroerendgoed_keys=G.alg_onroerendgoed_keys (+)
;
CREATE_TABLE(mld_refsrtkenmerk, MLD_BIBLIOTHEEK_PRIVILEGE)
( mld_refsrtkenmerk_key
NUMBER(10)
, mld_refsrtkenmerk_omschrijving
VARCHAR2(50)
, mld_refsrtkenmerk_upper
VARCHAR2(50)
, mld_refsrtkenmerk_objectnaam
VARCHAR2(30)
, mld_refsrtkenmerk_kolomnaam
VARCHAR2(30)
, mld_refsrtkenmerk_kolomtxt
VARCHAR2(30)
, fac_usrtab_key
NUMBER(10)
, mld_refsrtkenmerk_aanmaak
DATE
DEFAULT SYSDATE
, mld_refsrtkenmerk_verwijder
DATE
DEFAULT NULLDATUM
, CONSTRAINT mld_k_mld_refsrtkenmerk_key PRIMARY KEY(mld_refsrtkenmerk_key)
, CONSTRAINT mld_c_mld_refsrtkenmerk_omschr CHECK(mld_refsrtkenmerk_omschrijving IS NOT NULL)
, CONSTRAINT mld_c_mld_refsrtkenmerk_upper CHECK(mld_refsrtkenmerk_upper IS NOT NULL)
, CONSTRAINT mld_u_mld_refsrtkenmerk_upper UNIQUE(mld_refsrtkenmerk_upper)
, CONSTRAINT mld_c_mld_refsrtkenm_objnaam CHECK(mld_refsrtkenmerk_objectnaam IS NOT NULL)
, CONSTRAINT mld_c_mld_refsrtkenm_kolnaam CHECK(mld_refsrtkenmerk_kolomnaam IS NOT NULL)
, CONSTRAINT mld_c_mld_refsrtkenm_kolomtxt CHECK(mld_refsrtkenmerk_kolomtxt IS NOT NULL)
, CONSTRAINT mld_r_fac_usrtab_key1 FOREIGN KEY(fac_usrtab_key) REFERENCES fac_usrtab(fac_usrtab_key)
, CONSTRAINT mld_c_mld_refsrtkenmerk_aanm CHECK(mld_refsrtkenmerk_aanmaak IS NOT NULL)
);
CREATE_TABLE(mld_srtkenmerk, MLD_BIBLIOTHEEK_PRIVILEGE)
( mld_srtkenmerk_key
NUMBER(10)
, mld_srtkenmerk_omschrijving
VARCHAR2(50)
, mld_srtkenmerk_upper
VARCHAR2(50)
, mld_srtkenmerk_dimensie
VARCHAR2(10)
, mld_srtkenmerk_kenmerktype
VARCHAR2(1)
, mld_srtkenmerk_systeem
NUMBER(1)
, mld_srtkenmerk_lengte
NUMBER(3)
, mld_srtkenmerk_dec
NUMBER(3)
, mld_srtkenmerk_nmin
NUMBER(10)
, mld_srtkenmerk_nmax
NUMBER(10)
, mld_refsrtkenmerk_key
NUMBER(10)
, mld_srtkenmerk_aanmaak
DATE
DEFAULT SYSDATE
, mld_srtkenmerk_verwijder
DATE
DEFAULT NULLDATUM
, CONSTRAINT mld_k_mld_srtkenmerk_key PRIMARY KEY(mld_srtkenmerk_key)
, CONSTRAINT mld_c_mld_srtkenmerk_omschr CHECK(mld_srtkenmerk_omschrijving IS NOT NULL)
, CONSTRAINT mld_srtkenmerk_omschrijving CHECK(mld_srtkenmerk_omschrijving IS NOT NULL)
, CONSTRAINT mld_u_mld_srtkenmerk_upper UNIQUE(mld_srtkenmerk_upper)
, CONSTRAINT mld_c_mld_srtkenmerk_kenmtype CHECK(mld_srtkenmerk_kenmerktype IN ('C','N','D','R','X'))
, CONSTRAINT mld_c_mld_srtkenmerk_systeem CHECK(mld_srtkenmerk_systeem IS NULL
OR mld_srtkenmerk_systeem = 1)
, CONSTRAINT mld_c_mld_srtkenmerk_lengte CHECK(mld_srtkenmerk_lengte >= 1
AND mld_srtkenmerk_lengte <= 255)
, CONSTRAINT mld_c_mld_srtkenmerk_max_min CHECK(mld_srtkenmerk_nmax >= mld_srtkenmerk_nmin)
, CONSTRAINT mld_r_mld_refsrtkenmerk_key2 CHECK(mld_srtkenmerk_kenmerktype <> 'R'
OR mld_refsrtkenmerk_key IS NOT NULL)
, CONSTRAINT mld_c_mld_srtkenmerk_dec CHECK(mld_srtkenmerk_dec >= 0
AND mld_srtkenmerk_dec <= mld_srtkenmerk_lengte)
, CONSTRAINT mld_c_mld_srtkenmerk_aanm CHECK(mld_srtkenmerk_aanmaak IS NOT NULL)
, CONSTRAINT mld_r_mld_refsrtkenmerk_key1 FOREIGN KEY(mld_refsrtkenmerk_key)
REFERENCES mld_refsrtkenmerk(mld_refsrtkenmerk_key)
);
CREATE_TABLE(mld_kenmerk, MLD_BIBLIOTHEEK_PRIVILEGE)
( mld_kenmerk_key
NUMBER(10)
, mld_srtkenmerk_key
NUMBER(10)
, mld_stdmelding_key
NUMBER(10)
, mld_kenmerk_niveau
VARCHAR2(1)
, mld_kenmerk_verplicht
NUMBER(1)
, mld_kenmerk_toonbaar
NUMBER(1)
, mld_kenmerk_volgnummer
NUMBER(3)
, mld_kenmerk_locatiekolom
VARCHAR2(30)
, mld_kenmerk_uniek
NUMBER(1)
, mld_kenmerk_aanmaak
DATE
DEFAULT SYSDATE
, mld_kenmerk_verwijder
DATE
DEFAULT NULLDATUM
, CONSTRAINT mld_k_mld_kenmerk_key PRIMARY KEY(mld_kenmerk_key)
, CONSTRAINT mld_r_mld_srtkenmerk_key1 CHECK(mld_srtkenmerk_key IS NOT NULL)
, CONSTRAINT mld_r_mld_srtkenmerk_key2 FOREIGN KEY(mld_srtkenmerk_key) REFERENCES mld_srtkenmerk(mld_srtkenmerk_key)
, CONSTRAINT mld_c_mld_kenmerk_niveau1 CHECK(mld_kenmerk_niveau IS NOT NULL)
, CONSTRAINT mld_c_mld_kenmerk_niveau2 CHECK(mld_kenmerk_niveau IN ('D','S'))
, CONSTRAINT mld_c_mld_kenmerk_verplicht CHECK(mld_kenmerk_verplicht IS NULL
OR mld_kenmerk_verplicht = 1)
, CONSTRAINT mld_c_mld_kenmerk_toonbaar CHECK(mld_kenmerk_toonbaar IS NULL
OR mld_kenmerk_toonbaar = 1)
, CONSTRAINT mld_c_mld_kenmerk_aanmaak CHECK(mld_kenmerk_aanmaak IS NOT NULL)
, CONSTRAINT mld_u_mld_kenmerk UNIQUE(mld_srtkenmerk_key, mld_stdmelding_key, mld_kenmerk_niveau)
);
CREATE_TABLE(mld_kenmerkmelding, MLD_NORMAAL_PRIVILEGE)
( mld_kenmerkmelding_key
NUMBER(10)
, mld_melding_key
NUMBER(10)
, mld_kenmerk_key
NUMBER(10)
, mld_kenmerkmelding_waarde
VARCHAR2(255)
, mld_kenmerkmelding_aanmaak
DATE
DEFAULT SYSDATE
, mld_kenmerkmelding_verwijder
DATE
DEFAULT NULLDATUM
, CONSTRAINT mld_k_mld_kenmerkmelding_key PRIMARY KEY(mld_kenmerkmelding_key)
, CONSTRAINT mld_r_mld_kenmerk_melding_key1 CHECK(mld_melding_key IS NOT NULL)
, CONSTRAINT mld_r_mld_kenmerk_key1 CHECK(mld_kenmerk_key IS NOT NULL)
, CONSTRAINT mld_r_mld_kenmerk_key2 FOREIGN KEY(mld_kenmerk_key) REFERENCES mld_kenmerk(mld_kenmerk_key)
, CONSTRAINT mld_c_mld_kenmerkmelding_aanm CHECK(mld_kenmerkmelding_aanmaak IS NOT NULL)
, CONSTRAINT mld_u_mld_kenmerkmelding UNIQUE(mld_kenmerk_key, mld_melding_key, mld_kenmerkmelding_verwijder)
);
DEFINIEER_VIEW_AANWEZIG(mld_kenmerkmelding, mld_kenmerkmelding_verwijder,
mld_v_aanwezigkenmerkmelding, MLD_NORMAAL_PRIVILEGE);
DEFINIEER_VIEW_AANWEZIG(mld_refsrtkenmerk, mld_refsrtkenmerk_verwijder,
mld_v_aanwezigrefsrtkenmerk,MLD_NORMAAL_PRIVILEGE);
CREATE_VIEW(mld_v_srtkenmerk_gegevens, MLD_BIBLIOTHEEK_PRIVILEGE)
AS SELECT MLD_SK.mld_srtkenmerk_key
, MLD_SK.mld_srtkenmerk_omschrijving
, MLD_SK.mld_srtkenmerk_dimensie
, MLD_SK.mld_srtkenmerk_kenmerktype
, MLD_SK.mld_srtkenmerk_systeem
, MLD_SK.mld_srtkenmerk_lengte
, MLD_SK.mld_srtkenmerk_dec
, MLD_SK.mld_srtkenmerk_nmin
, MLD_SK.mld_srtkenmerk_nmax
, MLD_SK.mld_refsrtkenmerk_key
, MLD_RSK.mld_refsrtkenmerk_omschrijving
FROM mld_srtkenmerk MLD_SK
, mld_refsrtkenmerk MLD_RSK
WHERE MLD_SK.mld_refsrtkenmerk_key = MLD_RSK.mld_refsrtkenmerk_key (+)
;
CREATE_VIEW(mld_v_stdmelding_kenmerk, MLD_BIBLIOTHEEK_PRIVILEGE)
( mld_kenmerk_key
, mld_srtkenmerk_key
, mld_stdmelding_key
, mld_kenmerk_niveau
, mld_kenmerk_verplicht
, mld_kenmerk_toonbaar
, mld_kenmerk_uniek
, mld_kenmerk_locatiekolom
, mld_kenmerk_volgnummer
, mld_srtkenmerk_omschrijving
, mld_srtkenmerk_dimensie
, mld_srtkenmerk_kenmerktype
, mld_srtkenmerk_lengte
, mld_srtkenmerk_dec
, mld_srtkenmerk_nmin
, mld_srtkenmerk_nmax
, mld_refsrtkenmerk_key
, mld_stdmelding_omschrijving
, mld_stdmelding_upper
, mld_discipline_key
, mld_discipline_omschrijving
)
AS SELECT MLD_K.mld_kenmerk_key
, MLD_K.mld_srtkenmerk_key
, MLD_K.mld_stdmelding_key
, MLD_K.mld_kenmerk_niveau
, MLD_K.mld_kenmerk_verplicht
, MLD_K.mld_kenmerk_toonbaar
, MLD_K.mld_kenmerk_uniek
, MLD_K.mld_kenmerk_locatiekolom
, MLD_K.mld_kenmerk_volgnummer
, MLD_SK.mld_srtkenmerk_omschrijving
, MLD_SK.mld_srtkenmerk_dimensie
, MLD_SK.mld_srtkenmerk_kenmerktype
, MLD_SK.mld_srtkenmerk_lengte
, MLD_SK.mld_srtkenmerk_dec
, MLD_SK.mld_srtkenmerk_nmin
, MLD_SK.mld_srtkenmerk_nmax
, MLD_SK.mld_refsrtkenmerk_key
, MLD_SM.mld_stdmelding_omschrijving
, MLD_SM.mld_stdmelding_upper
, INS_D.ins_discipline_key
, INS_D.ins_discipline_omschrijving
FROM mld_kenmerk MLD_K
, mld_srtkenmerk MLD_SK
, mld_stdmelding MLD_SM
, ins_discipline INS_D
WHERE MLD_K.mld_srtkenmerk_key = MLD_SK.mld_srtkenmerk_key
AND MLD_K.mld_kenmerk_niveau = 'S'
AND MLD_SM.mld_stdmelding_key = MLD_K.mld_stdmelding_key
AND MLD_SM.mld_ins_discipline_key = INS_D.ins_discipline_key
UNION
SELECT MLD_K.mld_kenmerk_key
, MLD_K.mld_srtkenmerk_key
, MLD_K.mld_stdmelding_key
, MLD_K.mld_kenmerk_niveau
, MLD_K.mld_kenmerk_verplicht
, MLD_K.mld_kenmerk_toonbaar
, MLD_K.mld_kenmerk_uniek
, MLD_K.mld_kenmerk_locatiekolom
, MLD_K.mld_kenmerk_volgnummer
, MLD_SK.mld_srtkenmerk_omschrijving
, MLD_SK.mld_srtkenmerk_dimensie
, MLD_SK.mld_srtkenmerk_kenmerktype
, MLD_SK.mld_srtkenmerk_lengte
, MLD_SK.mld_srtkenmerk_dec
, MLD_SK.mld_srtkenmerk_nmin
, MLD_SK.mld_srtkenmerk_nmax
, MLD_SK.mld_refsrtkenmerk_key
, MLD_SM.mld_stdmelding_omschrijving
, MLD_SM.mld_stdmelding_upper
, MLD_D.ins_discipline_key
, MLD_D.ins_discipline_omschrijving
FROM mld_kenmerk MLD_K
, mld_srtkenmerk MLD_SK
, mld_stdmelding MLD_SM
, mld_v_aanwezigdiscipline MLD_D
WHERE MLD_K.mld_srtkenmerk_key = MLD_SK.mld_srtkenmerk_key
AND MLD_K.mld_kenmerk_niveau = 'D'
AND MLD_SM.mld_ins_discipline_key = MLD_D.ins_discipline_key
AND ( MLD_D.ins_discipline_key = MLD_K.mld_stdmelding_key
OR MLD_K.mld_stdmelding_key IS NULL)
;
CREATE_VIEW(mld_v_kenmerk_gegevens, MLD_BIBLIOTHEEK_PRIVILEGE)
( mld_kenmerk_key
, mld_srtkenmerk_key
, mld_kenmerk_niveau
, mld_kenmerk_verplicht
, mld_kenmerk_toonbaar
, mld_kenmerk_uniek
, mld_kenmerk_locatiekolom
, mld_kenmerk_volgnummer
, mld_srtkenmerk_omschrijving
, mld_srtkenmerk_dimensie
, mld_srtkenmerk_kenmerktype
, mld_srtkenmerk_lengte
, mld_srtkenmerk_dec
, mld_srtkenmerk_nmin
, mld_srtkenmerk_nmax
, mld_refsrtkenmerk_key
, mld_srtdeel_key
, mld_srtdeel_omschrijving
, mld_srtdeel_upper
, mld_discipline_key
, mld_discipline_omschrijving) AS
SELECT MLD_K.mld_kenmerk_key
, MLD_K.mld_srtkenmerk_key
, MLD_K.mld_kenmerk_niveau
, MLD_K.mld_kenmerk_verplicht
, MLD_K.mld_kenmerk_toonbaar
, MLD_K.mld_kenmerk_uniek
, MLD_K.mld_kenmerk_locatiekolom
, MLD_K.mld_kenmerk_volgnummer
, MLD_SK.mld_srtkenmerk_omschrijving
, MLD_SK.mld_srtkenmerk_dimensie
, MLD_SK.mld_srtkenmerk_kenmerktype
, MLD_SK.mld_srtkenmerk_lengte
, MLD_SK.mld_srtkenmerk_dec
, MLD_SK.mld_srtkenmerk_nmin
, MLD_SK.mld_srtkenmerk_nmax
, MLD_SK.mld_refsrtkenmerk_key
, MLD_SM.mld_stdmelding_key
, MLD_SM.mld_stdmelding_omschrijving
, MLD_SM.mld_stdmelding_upper
, INS_D.ins_discipline_key
, INS_D.ins_discipline_omschrijving
FROM mld_kenmerk MLD_K
, mld_srtkenmerk MLD_SK
, mld_stdmelding MLD_SM
, ins_discipline INS_D
WHERE MLD_K.mld_srtkenmerk_key = MLD_SK.mld_srtkenmerk_key
AND MLD_K.mld_kenmerk_niveau = 'S'
AND MLD_SM.mld_stdmelding_key = MLD_K.mld_stdmelding_key
AND MLD_SM.mld_ins_discipline_key = INS_D.ins_discipline_key
UNION
SELECT MLD_K.mld_kenmerk_key
, MLD_K.mld_srtkenmerk_key
, MLD_K.mld_kenmerk_niveau
, MLD_K.mld_kenmerk_verplicht
, MLD_K.mld_kenmerk_toonbaar
, MLD_K.mld_kenmerk_uniek
, MLD_K.mld_kenmerk_locatiekolom
, MLD_K.mld_kenmerk_volgnummer
, MLD_SK.mld_srtkenmerk_omschrijving
, MLD_SK.mld_srtkenmerk_dimensie
, MLD_SK.mld_srtkenmerk_kenmerktype
, MLD_SK.mld_srtkenmerk_lengte
, MLD_SK.mld_srtkenmerk_dec
, MLD_SK.mld_srtkenmerk_nmin
, MLD_SK.mld_srtkenmerk_nmax
, MLD_SK.mld_refsrtkenmerk_key
, TO_NUMBER(NULL)
, NULL
, NULL
, MLD_D.ins_discipline_key
, MLD_D.ins_discipline_omschrijving
FROM mld_kenmerk MLD_K
, mld_srtkenmerk MLD_SK
, mld_v_aanwezigdiscipline MLD_D
WHERE MLD_K.mld_srtkenmerk_key = MLD_SK.mld_srtkenmerk_key
AND MLD_K.mld_kenmerk_niveau = 'D'
AND MLD_K.mld_stdmelding_key = MLD_D.ins_discipline_key
UNION
SELECT MLD_K.mld_kenmerk_key
, MLD_K.mld_srtkenmerk_key
, MLD_K.mld_kenmerk_niveau
, MLD_K.mld_kenmerk_verplicht
, MLD_K.mld_kenmerk_toonbaar
, MLD_K.mld_kenmerk_uniek
, MLD_K.mld_kenmerk_locatiekolom
, MLD_K.mld_kenmerk_volgnummer
, MLD_SK.mld_srtkenmerk_omschrijving
, MLD_SK.mld_srtkenmerk_dimensie
, MLD_SK.mld_srtkenmerk_kenmerktype
, MLD_SK.mld_srtkenmerk_lengte
, MLD_SK.mld_srtkenmerk_dec
, MLD_SK.mld_srtkenmerk_nmin
, MLD_SK.mld_srtkenmerk_nmax
, MLD_SK.mld_refsrtkenmerk_key
, TO_NUMBER(NULL)
, NULL
, NULL
, TO_NUMBER(NULL)
, NULL
FROM mld_kenmerk MLD_K
, mld_srtkenmerk MLD_SK
WHERE MLD_K.mld_srtkenmerk_key = MLD_SK.mld_srtkenmerk_key
AND MLD_K.mld_kenmerk_niveau = 'D'
AND MLD_K.mld_stdmelding_key IS NULL
;
CREATE_VIEW(mld_v_stdkenmerkmelding, MLD_BIBLIOTHEEK_PRIVILEGE)
( mld_kenmerk_key
, mld_srtkenmerk_key
, mld_kenmerk_niveau
, mld_kenmerk_verplicht
, mld_kenmerk_toonbaar
, mld_kenmerk_uniek
, mld_kenmerk_locatiekolom
, mld_kenmerk_volgnummer
, mld_srtkenmerk_omschrijving
, mld_srtkenmerk_dimensie
, mld_srtkenmerk_kenmerktype
, mld_srtkenmerk_lengte
, mld_srtkenmerk_dec
, mld_srtkenmerk_nmin
, mld_srtkenmerk_nmax
, mld_refsrtkenmerk_key
, mld_stdmelding_key
, mld_discipline_key
, mld_kenmerkdeel_key
, mld_melding_key
, mld_kenmerkdeel_waarde
)
AS SELECT MLD_SMK.mld_kenmerk_key
, MLD_SMK.mld_srtkenmerk_key
, MLD_SMK.mld_kenmerk_niveau
, MLD_SMK.mld_kenmerk_verplicht
, MLD_SMK.mld_kenmerk_toonbaar
, MLD_SMK.mld_kenmerk_uniek
, MLD_SMK.mld_kenmerk_locatiekolom
, MLD_SMK.mld_kenmerk_volgnummer
, MLD_SMK.mld_srtkenmerk_omschrijving
, MLD_SMK.mld_srtkenmerk_dimensie
, MLD_SMK.mld_srtkenmerk_kenmerktype
, MLD_SMK.mld_srtkenmerk_lengte
, MLD_SMK.mld_srtkenmerk_dec
, MLD_SMK.mld_srtkenmerk_nmin
, MLD_SMK.mld_srtkenmerk_nmax
, MLD_SMK.mld_refsrtkenmerk_key
, MLD_SMK.mld_stdmelding_key
, MLD_SMK.mld_discipline_key
, MLD_KD.mld_kenmerkmelding_key
, MLD_M.mld_melding_key
, MLD_KD.mld_kenmerkmelding_waarde
FROM mld_melding MLD_M
, mld_v_aanwezigkenmerkmelding MLD_KD
, mld_v_stdmelding_kenmerk MLD_SMK
WHERE MLD_M.mld_melding_key = MLD_KD.mld_melding_key
AND MLD_M.mld_stdmelding_key = MLD_SMK.mld_stdmelding_key
AND MLD_SMK.mld_kenmerk_key = MLD_KD.mld_kenmerk_key
UNION
SELECT MLD_SMK.mld_kenmerk_key
, MLD_SMK.mld_srtkenmerk_key
, MLD_SMK.mld_kenmerk_niveau
, MLD_SMK.mld_kenmerk_verplicht
, MLD_SMK.mld_kenmerk_toonbaar
, MLD_SMK.mld_kenmerk_uniek
, MLD_SMK.mld_kenmerk_locatiekolom
, MLD_SMK.mld_kenmerk_volgnummer
, MLD_SMK.mld_srtkenmerk_omschrijving
, MLD_SMK.mld_srtkenmerk_dimensie
, MLD_SMK.mld_srtkenmerk_kenmerktype
, MLD_SMK.mld_srtkenmerk_lengte
, MLD_SMK.mld_srtkenmerk_dec
, MLD_SMK.mld_srtkenmerk_nmin
, MLD_SMK.mld_srtkenmerk_nmax
, MLD_SMK.mld_refsrtkenmerk_key
, MLD_SMK.mld_stdmelding_key
, MLD_SMK.mld_discipline_key
, TO_NUMBER(NULL)
, MLD_M.mld_melding_key
, NULL
FROM mld_melding MLD_M
, mld_v_stdmelding_kenmerk MLD_SMK
WHERE MLD_M.mld_stdmelding_key = MLD_SMK.mld_stdmelding_key
AND NOT EXISTS (SELECT MLD_KD.mld_melding_key
FROM mld_v_aanwezigkenmerkmelding MLD_KD
WHERE MLD_KD.mld_melding_key = MLD_M.mld_melding_key
AND MLD_KD.mld_kenmerk_key = MLD_SMK.mld_kenmerk_key)
UNION
SELECT MLD_SMK.mld_kenmerk_key
, MLD_SMK.mld_srtkenmerk_key
, MLD_SMK.mld_kenmerk_niveau
, MLD_SMK.mld_kenmerk_verplicht
, MLD_SMK.mld_kenmerk_toonbaar
, MLD_SMK.mld_kenmerk_uniek
, MLD_SMK.mld_kenmerk_locatiekolom
, MLD_SMK.mld_kenmerk_volgnummer
, MLD_SMK.mld_srtkenmerk_omschrijving
, MLD_SMK.mld_srtkenmerk_dimensie
, MLD_SMK.mld_srtkenmerk_kenmerktype
, MLD_SMK.mld_srtkenmerk_lengte
, MLD_SMK.mld_srtkenmerk_dec
, MLD_SMK.mld_srtkenmerk_nmin
, MLD_SMK.mld_srtkenmerk_nmax
, MLD_SMK.mld_refsrtkenmerk_key
, MLD_SMK.mld_stdmelding_key
, MLD_SMK.mld_discipline_key
, TO_NUMBER(NULL)
, TO_NUMBER(NULL)
, NULL
FROM mld_v_stdmelding_kenmerk MLD_SMK
;
CREATE SEQUENCE mld_s_mld_refsrtkenmerk_key MINVALUE 1;
CREATE SEQUENCE mld_s_mld_srtkenmerk_key MINVALUE 1;
CREATE SEQUENCE mld_s_mld_kenmerk_key MINVALUE 1;
CREATE SEQUENCE mld_s_mld_kenmerkmelding_key MINVALUE 1;
CREATE INDEX mld_i_mld_srtkenmerk1 ON mld_srtkenmerk(mld_refsrtkenmerk_key);
CREATE INDEX mld_i_mld_kenmerk1 ON mld_kenmerk(mld_srtkenmerk_key);
CREATE INDEX mld_i_mld_kenmerk2 ON mld_kenmerk(mld_stdmelding_key);
CREATE INDEX mld_i_mld_kenmerkmelding1 ON mld_kenmerkmelding(mld_melding_key);
CREATE INDEX mld_i_mld_kenmerkmelding2 ON mld_kenmerkmelding(mld_kenmerk_key);
CREATE INDEX mld_i_mld_kenmerkmelding3 ON mld_kenmerkmelding(mld_kenmerkmelding_waarde);
CREATE_TRIGGER(mld_t_mld_refsrtkenmerk_b_iu)
BEFORE INSERT OR UPDATE ON mld_refsrtkenmerk
FOR EACH ROW
DECLARE
ObjectType USER_OBJECTS.OBJECT_TYPE%TYPE;
BEGIN
UPDATE_PRIMARY_KEY(mld_refsrtkenmerk_key, mld_s_mld_refsrtkenmerk_key);
UPDATE_UPPER(mld_refsrtkenmerk_omschrijving, mld_refsrtkenmerk_upper);
UPDATE_AANMAAKDATUM(mld_refsrtkenmerk, mld_refsrtkenmerk_aanmaak);
--
-- Controleer of de ingevulde tablenaam, kolomnaam en kolomtxt
-- wel bestaan. Controle moet ook gebeuren als de omschrijving
-- is gewijzigd; de objectnaam is dan hetzelfde.
--
BEGIN
SELECT object_type
INTO ObjectType
FROM USER_OBJECTS
WHERE object_name = :new.mld_refsrtkenmerk_objectnaam;
EXCEPTION
WHEN NO_DATA_FOUND THEN ObjectType := NULL;
END;
--
IF ObjectType IS NULL
THEN
raise_application_error(-20000, 'mld_m244');
ELSIF ObjectType = 'TABLE'
OR ObjectType = 'VIEW'
THEN
-- Bij een TABLE of VIEW staan de kolommen in USER_TAB_COLUMNS
-- Controleer of deze KOLOMNAAM en KOLOMTXT bestaan.
--
DECLARE
Dummy VARCHAR2(30);
BEGIN
SELECT column_name
INTO Dummy
FROM USER_TAB_COLUMNS
WHERE table_name = :new.mld_refsrtkenmerk_objectnaam
AND column_name = :new.mld_refsrtkenmerk_kolomnaam
AND data_type = 'NUMBER';
EXCEPTION
WHEN NO_DATA_FOUND THEN raise_application_error(-20000, 'mld_m245');
END;
--
DECLARE
Dummy VARCHAR2(30);
BEGIN
SELECT column_name
INTO Dummy
FROM USER_TAB_COLUMNS
WHERE table_name = :new.mld_refsrtkenmerk_objectnaam
AND column_name = :new.mld_refsrtkenmerk_kolomtxt
AND data_type LIKE '%CHAR%';
EXCEPTION
WHEN NO_DATA_FOUND THEN raise_application_error(-20000, 'mld_m246');
END;
ELSIF ObjectType = 'SYNONYM'
THEN
-- Bij een SYNONYM kan er niet gecontroleerd worden
-- of de ingevulde kolommen bestaan.
--
NULL;
ELSE
raise_application_error(-20000, 'mld_m244');
END IF;
END;
/
CREATE_TRIGGER(mld_t_mld_srtkenmerk_b_iu)
BEFORE INSERT OR UPDATE ON mld_srtkenmerk
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(mld_srtkenmerk_key, mld_s_mld_srtkenmerk_key);
UPDATE_UPPER(mld_srtkenmerk_omschrijving, mld_srtkenmerk_upper);
UPDATE_AANMAAKDATUM(mld_srtkenmerk, mld_srtkenmerk_aanmaak);
--
IF (:new.mld_srtkenmerk_kenmerktype = 'C'
OR :new.mld_srtkenmerk_kenmerktype = 'N')
AND :new.mld_srtkenmerk_lengte IS NULL
THEN
raise_application_error(-20000, 'MLD_C_MLD_SRTKENMERK_LENGTE');
END IF;
--
IF :new.mld_srtkenmerk_kenmerktype = 'N'
AND :old.mld_srtkenmerk_key IS NOT NULL
THEN
IF :old.mld_srtkenmerk_nmin <> :new.mld_srtkenmerk_nmin
OR :old.mld_srtkenmerk_nmin IS NULL
THEN
DECLARE
Dummy CHAR;
BEGIN
SELECT 'X'
INTO Dummy
FROM mld_kenmerkmelding
WHERE TO_NUMBER(mld_kenmerkmelding_waarde) < :new.mld_srtkenmerk_nmin
AND mld_kenmerk_key IN
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = :old.mld_srtkenmerk_key
);
raise_application_error(-20000, 'MLD_C_MLD_SRTKENMERK_MIN');
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
WHEN TOO_MANY_ROWS
THEN raise_application_error(-20000, 'MLD_C_MLD_SRTKENMERK_MIN');
END;
END IF;
--
IF :old.mld_srtkenmerk_nmax <> :new.mld_srtkenmerk_nmax
OR :old.mld_srtkenmerk_nmax IS NULL
THEN
DECLARE
Dummy CHAR;
BEGIN
SELECT 'X'
INTO Dummy
FROM mld_kenmerkmelding
WHERE TO_NUMBER(mld_kenmerkmelding_waarde) > :new.mld_srtkenmerk_nmax
AND mld_kenmerk_key IN
(SELECT mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_srtkenmerk_key = :old.mld_srtkenmerk_key
);
raise_application_error(-20000, 'MLD_C_MLD_SRTKENMERK_MAX');
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
WHEN TOO_MANY_ROWS
THEN raise_application_error(-20000, 'MLD_C_MLD_SRTKENMERK_MAX');
END;
END IF;
END IF;
END;
/
CREATE_TRIGGER(mld_t_mld_srtkenmerk_b_d)
BEFORE DELETE ON mld_srtkenmerk
FOR EACH ROW
BEGIN
IF :old.mld_srtkenmerk_systeem IS NOT NULL
THEN
raise_application_error(-20003, 'MLD_C_MLD_SRTKENMERK_SYSTEEM');
END IF;
END;
/
CREATE_TRIGGER(mld_t_mld_kenmerk_b_iu)
BEFORE INSERT OR UPDATE ON mld_kenmerk
FOR EACH ROW
BEGIN
-- Een kenmerk mag niet verplicht worden gemaakt als er al
-- waarden ingevuld zijn en hij daarvoor niet verplicht was.
-- Dit is alleen bij wijzigen te controleren, doordat
-- de PrimaryKey niet NULL is.
--
IF :new.mld_kenmerk_key IS NOT NULL
AND :new.mld_kenmerk_verplicht IS NOT NULL
AND :old.mld_kenmerk_verplicht IS NULL
THEN
DECLARE
Dummy CHAR;
BEGIN
SELECT 'X'
INTO Dummy
FROM mld_kenmerkmelding
WHERE mld_kenmerk_key = :new.mld_kenmerk_key;
raise_application_error(-20004, 'MLD_C_MLD_KENMERK_VERPLICHT0');
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
WHEN TOO_MANY_ROWS
THEN raise_application_error(-20004, 'MLD_C_MLD_KENMERK_VERPLICHT0');
END;
END IF;
--
UPDATE_PRIMARY_KEY(mld_kenmerk_key, mld_s_mld_kenmerk_key);
UPDATE_AANMAAKDATUM(mld_kenmerk, mld_kenmerk_aanmaak);
END;
/
CREATE_TRIGGER(mld_t_mld_kenmerkmelding_b_iu)
BEFORE INSERT OR UPDATE ON mld_kenmerkmelding
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(mld_kenmerkmelding_key, mld_s_mld_kenmerkmelding_key);
-- Controleer eerst of de ingevulde waarde goed is.
--
IF :new.mld_kenmerkmelding_waarde <> :old.mld_kenmerkmelding_waarde
OR :old.mld_kenmerkmelding_waarde IS NULL
OR :new.mld_kenmerkmelding_waarde IS NULL
THEN
DECLARE
SrtKenmerkOmschr mld_srtkenmerk.mld_srtkenmerk_omschrijving%TYPE;
SrtKenmerkType mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE;
SrtKenmerkLengte mld_srtkenmerk.mld_srtkenmerk_lengte%TYPE;
SrtKenmerkDec mld_srtkenmerk.mld_srtkenmerk_dec%TYPE;
SrtKenmerkNMin mld_srtkenmerk.mld_srtkenmerk_nmin%TYPE;
SrtKenmerkNMax mld_srtkenmerk.mld_srtkenmerk_nmax%TYPE;
KenmerkVerplicht mld_kenmerk.mld_kenmerk_verplicht%TYPE;
RefSrtKenmerkKey NUMBER(10);
NumberWaarde NUMBER(15,5);
FormatMask VARCHAR2(60);
KenmerkMeldingWaarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
BEGIN
KenmerkMeldingWaarde := :new.mld_kenmerkmelding_waarde;
--
SELECT MLD_SK.mld_srtkenmerk_omschrijving
, MLD_SK.mld_srtkenmerk_kenmerktype
, MLD_SK.mld_srtkenmerk_lengte
, MLD_SK.mld_srtkenmerk_dec
, MLD_SK.mld_srtkenmerk_nmin
, MLD_SK.mld_srtkenmerk_nmax
, MLD_SK.mld_refsrtkenmerk_key
, MLD_K.mld_kenmerk_verplicht
INTO SrtKenmerkOmschr
, SrtKenmerkType
, SrtKenmerkLengte
, SrtKenmerkDec
, SrtKenmerkNMin
, SrtKenmerkNMax
, RefSrtKenmerkKey
, KenmerkVerplicht
FROM mld_srtkenmerk MLD_SK
, mld_kenmerk MLD_K
WHERE MLD_SK.mld_srtkenmerk_key = MLD_K.mld_srtkenmerk_key
AND MLD_K.mld_kenmerk_key = :new.mld_kenmerk_key;
--
-- Controleer eerst of het verplichte veld ingevuld is.
--
IF KenmerkVerplicht IS NOT NULL AND KenmerkMeldingWaarde IS NULL
THEN
raise_application_error(-20004, 'mld_m240,'||SrtKenmerkOmschr);
--
-- Kijk welk KenmerkType gebruikt wordt.
-- Aan de hand daarvan moet een controle uitgevoerd worden.
--
ELSIF SrtKenmerkType = 'C'
THEN
-- CHAR
-- Controleer of de lengte te groot of goed is.
IF LENGTH(KenmerkMeldingWaarde) > SrtKenmerkLengte
THEN
raise_application_error(-20004, 'mld_m241,'||SrtKenmerkOmschr||','||TO_CHAR(SrtKenmerkLengte));
END IF;
ELSIF SrtKenmerkType = 'N'
THEN
-- NUMBER
-- Controleer of er een numerieke waarde ingevuld is.
IF SrtKenmerkDec IS NULL OR SrtKenmerkDec = 0
THEN
FormatMask := RPAD('9', SrtKenmerkLengte, '9');
ELSE
FormatMask := RPAD('9', SrtKenmerkLengte - SrtKenmerkDec, '9')||
'D'||RPAD('9', SrtKenmerkDec, '9');
END IF;
--
BEGIN
NumberWaarde := TO_NUMBER(KenmerkMeldingWaarde);
EXCEPTION
WHEN OTHERS
THEN FormatMask := REPLACE(FormatMask, '9', '#');
FormatMask := REPLACE(FormatMask, '0', '#');
FormatMask := REPLACE(FormatMask, 'D', '.');
raise_application_error(-20004,'mld_m242,'||SrtKenmerkOmschr||','||FormatMask);
END;
-- Controleer of de waarde binnen NMin en NMax ligt.
IF (SrtKenmerkNMin IS NOT NULL AND NumberWaarde < SrtKenmerkNMin)
OR (SrtKenmerkNMax IS NOT NULL AND NumberWaarde > SrtKenmerkNMax)
THEN
raise_application_error(-20004, 'mld_m243,'||SrtKenmerkOmschr||','||
TO_CHAR(SrtKenmerkNMin)||','||
TO_CHAR(SrtKenmerkNMax));
ELSE
-- Controleer of de waarde aan het formaat voldoet.
KenmerkMeldingWaarde := LTRIM(to_char(NumberWaarde, FormatMask));
IF INSTR(KenmerkMeldingWaarde, '#') <> 0
THEN
FormatMask := REPLACE(FormatMask, '9', '#');
FormatMask := REPLACE(FormatMask, '0', '#');
FormatMask := REPLACE(FormatMask, 'D', '.');
raise_application_error(-20004,'mld_m242,'||SrtKenmerkOmschr||','||FormatMask);
END IF;
END IF;
-- Zet de geconverteerde waarde terug.
:new.mld_kenmerkmelding_waarde := KenmerkMeldingWaarde;
ELSIF SrtKenmerkType = 'D'
THEN
-- DATUM
KenmerkMeldingWaarde := TO_CHAR(TO_DATE(KenmerkMeldingWaarde,'DD-MM-YYYY'),'DD-MM-YYYY');
-- Zet de geconverteerde waarde terug.
:new.mld_kenmerkmelding_waarde := KenmerkMeldingWaarde;
END IF;
END;
END IF;
END;
/
CREATE OR REPLACE PACKAGE Mld AS
PROCEDURE mld_update_kenmerkmelding(p_melding_key IN NUMBER
,p_kenmerk_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2
,p_mselect IN VARCHAR2);
PROCEDURE mld_kenmerkmelding_insert(p_melding_key IN NUMBER
,p_kenmerk_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2);
PROCEDURE mld_kenmerkmelding_delete(p_kenmerkmelding_key IN NUMBER
,p_historymode IN VARCHAR2);
PROCEDURE mld_kenmerkmelding_update(p_kenmerkmelding_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2);
END Mld;
/
CREATE OR REPLACE PACKAGE BODY Mld AS
PROCEDURE mld_update_kenmerkmelding(p_melding_key IN NUMBER
,p_kenmerk_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2
,p_mselect IN VARCHAR2
) IS
-- Zoek alle records voor een gegeven melding en kenmerk
-- en zet de meest recente bovenaan.
--
CURSOR c_kenmerkmelding(p_kenmerk_key IN NUMBER
,p_melding_key IN NUMBER
) IS
SELECT mld_kenmerkmelding_key
, trunc(mld_kenmerkmelding_aanmaak) mld_kenmerkmelding_aanmaak
, trunc(mld_kenmerkmelding_verwijder) mld_kenmerkmelding_verwijder
FROM mld_kenmerkmelding
WHERE mld_kenmerk_key = p_kenmerk_key
AND mld_melding_key = p_melding_key
ORDER BY mld_kenmerkmelding_key DESC
;
r_kenmerkmelding c_kenmerkmelding%ROWTYPE;
BEGIN
OPEN c_kenmerkmelding(p_kenmerk_key,p_melding_key);
FETCH c_kenmerkmelding INTO r_kenmerkmelding;
IF c_kenmerkmelding%NOTFOUND
THEN
-- Voor deze melding en kenmerk bestaat nog geen record
-- dus toevoegen. Behalve als de toe te voegen waarde
-- null is, dan wil je niets toevoegen dus dan ook
-- geen actie.
IF p_waarde IS NOT NULL
THEN
Mld.mld_kenmerkmelding_insert(p_melding_key
,p_kenmerk_key
,p_waarde
,p_historymode);
END IF;
ELSE
-- Er bestaat een record voor de melding en kenmerk.
--
IF p_historymode = '0'
THEN
IF p_waarde IS NOT NULL
THEN
Mld.mld_kenmerkmelding_update(r_kenmerkmelding.mld_kenmerkmelding_key
,p_waarde
,p_historymode);
END IF;
ELSIF p_historymode = '1'
THEN
-- Er bestaat een record voor de melding en kenmerk.
--
IF p_waarde IS NOT NULL
THEN
-- Er is een nieuwe waarde voor een bepaalde melding en kenmerk.
--
IF r_kenmerkmelding.mld_kenmerkmelding_aanmaak <= trunc(sysdate)
AND r_kenmerkmelding.mld_kenmerkmelding_verwijder IS NULL
THEN
-- Het record is nog actueel, dus moet eerst gesloten worden
-- door het als verwijderd te markeren.
--
Mld.mld_kenmerkmelding_delete(r_kenmerkmelding.mld_kenmerkmelding_key
,p_historymode);
END IF;
--
-- Er bestaat nu tijdelijk geen actueel record meer voor
-- de melding en kenmerk !!
--
IF r_kenmerkmelding.mld_kenmerkmelding_aanmaak < trunc(sysdate)
AND ( r_kenmerkmelding.mld_kenmerkmelding_verwijder <= trunc(sysdate)
OR r_kenmerkmelding.mld_kenmerkmelding_verwijder IS NULL)
THEN
-- Het laatste record voor kenmerk bij een melding heeft langer
-- dan een dag bestaan. Voeg daarom een nieuwe toe.
--
Mld.mld_kenmerkmelding_insert(p_melding_key
,p_kenmerk_key
,p_waarde
,p_historymode);
ELSIF r_kenmerkmelding.mld_kenmerkmelding_aanmaak = trunc(sysdate)
THEN
-- Het record voor kenmerk bij een melding is vandaag
-- aangemaakt dus wordt er geen nieuwe toegevoegd maar
-- de huidige aangepast.
--
Mld.mld_kenmerkmelding_update(r_kenmerkmelding.mld_kenmerkmelding_key
,p_waarde
,p_historymode);
END IF;
ELSE
-- De nieuwe waarde voor de melding en kenmerk is leeg, dus
-- moet het als verwijderd gemarkeerd worden.
--
IF p_mselect = '0'
THEN
Mld.mld_kenmerkmelding_delete(r_kenmerkmelding.mld_kenmerkmelding_key
,p_historymode);
END IF;
END IF;
END IF;
END IF;
CLOSE c_kenmerkmelding;
END mld_update_kenmerkmelding;
PROCEDURE mld_kenmerkmelding_insert(p_melding_key IN NUMBER
,p_kenmerk_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2
) IS
BEGIN
IF p_waarde IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding
( mld_kenmerk_key
, mld_melding_Key
, mld_kenmerkmelding_waarde
)
VALUES(p_kenmerk_key
, p_melding_key
, p_waarde);
END IF;
END mld_kenmerkmelding_insert;
PROCEDURE mld_kenmerkmelding_delete(p_kenmerkmelding_key IN NUMBER
,p_historymode IN VARCHAR2
) IS
BEGIN
IF p_historymode = '0'
THEN
-- NON HISTORY MODE
DELETE
FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_key = p_kenmerkmelding_key;
ELSE
--HISTORY MODE
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_verwijder = SYSDATE
WHERE mld_kenmerkmelding_key = p_kenmerkmelding_key;
END IF;
END mld_kenmerkmelding_delete;
PROCEDURE mld_kenmerkmelding_update(p_kenmerkmelding_key IN NUMBER
,p_waarde IN VARCHAR2
,p_historymode IN VARCHAR2
) IS
BEGIN
IF p_historymode = '0'
THEN
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_waarde = p_waarde
, mld_kenmerkmelding_aanmaak = SYSDATE
, mld_kenmerkmelding_verwijder = NULL
WHERE mld_kenmerkmelding_key = p_kenmerkmelding_key;
ELSIF p_historymode = '1'
THEN
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_waarde = p_waarde
, mld_kenmerkmelding_verwijder = NULL
WHERE mld_kenmerkmelding_key = p_kenmerkmelding_key;
END IF;
END mld_kenmerkmelding_update;
END Mld;
/
DEF_FAC_MESSAGE ('MLD_C_MLD_SRTKENMERK_LENGTE', 'De lengte moet tussen 1 en 50 liggen.','Enter a length between 1 en 50');
DEF_FAC_MESSAGE ('MLD_C_MLD_SRTKENMERK_MIN', 'Objecten gevonden die niet voldoen aan nieuwe min.waarde van dit kenmerksoort.','Found objects with min. values lower then de new min. value for property-type');
DEF_FAC_MESSAGE ('MLD_C_MLD_SRTKENMERK_MAX', 'Objecten gevonden die niet voldoen aan nieuwe max.waarde van dit kenmerksoort.','Found objects with min. values lower then de new min. value for property-type');
DEF_FAC_MESSAGE ('MLD_C_MLD_SRTKENMERK_SYSTEEM', 'De waarde van het veld ''Systeem'' mag alleen de waardes ''NULL'' of ''1'' bevatten.','Allowed values for field ''System'' are ''NULL'' or ''1''');
DEF_FAC_MESSAGE ('MLD_C_MLD_KENMERK_VERPLICHT0', 'Het veld ''Verplicht'' mag niet aangezet worden.','The field ''Obligatory'' has to be turned off');
DEF_FAC_MESSAGE ('MLD_M240', 'Het veld %1% is niet ingevuld.','Value for field %1% is not supplied');
DEF_FAC_MESSAGE ('MLD_M241', 'De waarde van het veld %1% mag niet langer zijn dan %2%.','The length of the value for field %1% has to be %2" or less');
DEF_FAC_MESSAGE ('MLD_M242', 'De waarde van het veld %1% voldoet niet aan formaat %2%.','Incorrect format for field %1%: format %2% is obligatory');
DEF_FAC_MESSAGE ('MLD_M243', 'De waarde van het veld %1% moet tussen %2% en %3% liggen.','The value for field %1% has to be between %2% en %3%');
DEF_FAC_MESSAGE ('MLD_M244', 'Het database-object bestaat niet.','Database object does not exist');
DEF_FAC_MESSAGE ('MLD_M245', 'De kolomnaam bestaat niet in het database-object.','Column name does not exist in database object');
DEF_FAC_MESSAGE ('MLD_M246', 'De kolomtekst bestaat niet in het database-object.','Column text does not exist in database object');
#endif //MLD
#ifdef RES
#endif //RES
#ifdef BES
#endif //BES
#ifdef BEZ
#endif //BEZ
#ifdef CNT
#endif //CNT
#ifdef WEB
DEF_FAC_FUNCTIE('WEB_PRSMAN', 'Backoffice:Personenbeheer', 'WEB', 2);
DEF_FAC_FUNCTIE('WEB_ALGMAN', 'Backoffice:Vastgoedbeheer', 'WEB', 2);
#endif //WEB
#ifdef SCH
#endif //SCH
#ifdef FAC
#endif //FAC
#ifdef PRA
CREATE_TRIGGER(PRS_T_PRS_AANMELD_B_IU)
BEFORE INSERT OR UPDATE ON prs_aanmeld
FOR EACH ROW
BEGIN
DECLARE mes VARCHAR2(255);
mes2 VARCHAR2(255);
actkey NUMBER;
code VARCHAR2(6);
keepmes NUMBER;
pkey NUMBER;
titel_key NUMBER;
email_key NUMBER;
mphone_key NUMBER;
badgen_key NUMBER;
badges_key NUMBER;
naam VARCHAR2(30);
aanmeldActKey NUMBER;
BEGIN
-- constants
titel_key := 62; -- person titel
email_key := 5; -- email kenmerk key
mphone_key := 1020; -- mobile phone kenmerk key
badgen_key := 1000; -- badge number kenmerk key
badges_key := 1001; -- badge sort kenmerk key
aanmeldactkey:= 21; -- Action : announcement of new personnel
IF :new.prs_aanmeld_key IS NULL THEN SELECT prs_s_prs_aanmeld_key.nextval INTO :new.prs_aanmeld_key FROM DUAL; END IF;
IF :old.Prs_aanmeld_aanmaak IS NULL THEN
BEGIN
-- initial new employee data input
:new.Prs_aanmeld_aanmaak := SYSDATE;
naam := :new.prs_aanmeld_naam;
code := 'COMPPZ';
BEGIN
SELECT WEB_USER_MESS_TEXT_DSC, WEB_USER_MESS_ACTIONS_KEY into mes, actkey
FROM WEB_USER_MESS_TEXT where WEB_USER_MESS_TEXT_CODE = code;
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
END;
-- Initial data. IF workplace on location - add person in Facilitor...
IF (:old.PRS_AANMELD_WERKPLEK_OPLOC IS NULL OR :old.PRS_AANMELD_WERKPLEK_OPLOC = 0 )
AND :new.PRS_AANMELD_WERKPLEK_OPLOC = 1
THEN
BEGIN
SELECT prs_s_prs_alluitvoerende_keys.nextval, nvl(FAC_USRDATA_OMSCHR,'')
INTO :new.PRS_PERSLID_KEY, mes2 FROM fac_usrdata WHERE fac_usrtab_key (+)= titel_key
AND :new.Prs_aanmeld_titel_key = FAC_USRDATA_KEY(+);
--
INSERT INTO PRS_PERSLID
(PRS_PERSLID_KEY, PRS_PERSLID_MODULE, PRS_SRTPERSLID_KEY, PRS_AFDELING_KEY,
PRS_PERSLID_NAAM, PRS_PERSLID_TITEL, PRS_PERSLID_NR, PRS_PERSLID_INGANGSDATUM,
PRS_PERSLID_EINDDATUM, PRS_PERSLID_TELEFOONNR, PRS_PERSLID_AANMAAK) values
(:new.PRS_PERSLID_KEY, 'PRS', 1, :new.Prs_afdeling_key, :new.Prs_aanmeld_naam, mes2,
:new.Prs_aanmeld_persnr, :new.prs_aanmeld_datumbadgestart, :new.prs_aanmeld_datumbadgeend,
:new.prs_aanmeld_telintern, :new.Prs_aanmeld_aanmaak);
END;
END IF;
-- inform security department
IF actkey is not null THEN
INSERT INTO WEB_USER_MESSAGES
SELECT NULL, NULL, PRS_PERSLID_KEY, actkey, REPLACE(mes,'##NAAM##', naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
FROM PRS_V_AANWEZIGSECURITY;
END IF;
END;
ELSE
naam := :old.prs_aanmeld_naam;
END IF;
IF :old.PRS_AANMELD_SECU_OK is null and :new.PRS_AANMELD_SECU_OK is not null and
:new.PRS_AANMELD_SECU_end is null THEN
BEGIN
:new.PRS_AANMELD_SECU_end := SYSDATE;
END;
END IF;
IF :old.PRS_AANMELD_SECU_end is null and :new.PRS_AANMELD_SECU_end is not null THEN
-- initial security input is completed
BEGIN
code := 'COMPSC';
BEGIN
select WEB_USER_MESS_TEXT_DSC, WEB_USER_MESS_ACTIONS_KEY into mes, actkey
from WEB_USER_MESS_TEXT where WEB_USER_MESS_TEXT_CODE = code;
EXCEPTION WHEN NO_DATA_FOUND THEN null;
END;
IF actkey is not null THEN
-- inform security department staff manager and contact person if it's not one person
IF :new.prs_aanmeld_pz_key is not null THEN
insert into WEB_USER_MESSAGES
select NULL, NULL, :new.prs_aanmeld_pz_key, actkey, REPLACE(mes, '##NAAM##', naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
FROM dual;
IF :new.prs_aanmeld_pz_key <> :new.prs_aanmeld_contact_key THEN
insert into WEB_USER_MESSAGES
select NULL, NULL, :new.prs_aanmeld_contact_key, actkey, REPLACE(mes,'##NAAM##', naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
FROM dual;
ELSE
insert into WEB_USER_MESSAGES
select NULL, NULL, PRS_PERSLID_KEY, actkey, REPLACE(mes, '##NAAM##', naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
FROM PRS_V_AANWEZIGFACILITY;
END IF;
ELSE
insert into WEB_USER_MESSAGES
select NULL, NULL, :new.prs_aanmeld_contact_key, actkey, REPLACE(mes,'##NAAM##', naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
FROM dual;
END IF;
END IF;
END;
END IF;
IF (:old.PRS_AANMELD_SECU_OK is null and :new.PRS_AANMELD_SECU_OK is not null and :new.PRS_AANMELD_WERKPLEK_OPLOC = 1)
AND (:old.PRS_AANMELD_NAAM IS NULL AND :new.PRS_AANMELD_NAAM IS NOT NULL
OR :old.PRS_AANMELD_NAAM <> :new.PRS_AANMELD_NAAM)
THEN
-- all security input is complete, if Name is changed by SUVS then update prs_perslid
BEGIN
UPDATE prs_perslid
SET prs_perslid_naam = :new.Prs_aanmeld_naam
WHERE prs_perslid_key = :new.prs_perslid_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN NULL;
END;
END IF;
IF :old.PRS_AANMELD_CP_OK is null and :new.PRS_AANMELD_CP_OK is not null THEN
-- contact person's input is completed
BEGIN
code := 'COMPCP';
BEGIN
select WEB_USER_MESS_TEXT_DSC, WEB_USER_MESS_ACTIONS_KEY into mes, actkey
from WEB_USER_MESS_TEXT where WEB_USER_MESS_TEXT_CODE = code;
EXCEPTION WHEN NO_DATA_FOUND THEN null;
END;
-- inform facility manager
-- (but only if staff manager and contact person if it's not one person)
IF actkey is not null
AND :new.prs_aanmeld_pz_key <> :new.prs_aanmeld_contact_key
THEN
insert into WEB_USER_MESSAGES
select NULL, NULL, PRS_PERSLID_KEY, actkey, REPLACE(mes, '##NAAM##', naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
FROM PRS_V_AANWEZIGFACILITY;
END IF;
END;
END IF;
IF :old.PRS_AANMELD_FACI_OK is null and :new.PRS_AANMELD_FACI_OK is not null THEN
-- facilities input is completed
BEGIN
code := 'COMPFC';
BEGIN
select WEB_USER_MESS_TEXT_DSC, WEB_USER_MESS_ACTIONS_KEY into mes, actkey
from WEB_USER_MESS_TEXT where WEB_USER_MESS_TEXT_CODE = code;
EXCEPTION WHEN NO_DATA_FOUND THEN null;
END;
IF actkey is not null THEN
insert into WEB_USER_MESSAGES
select NULL, NULL, u.PRS_PERSLID_KEY, actkey, REPLACE(mes,'##NAAM##',naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
FROM FAC_V_WEBGEBRUIKER w,FAC_V_WEBUSER u,FAC_V_WEBFUNCTIE f
WHERE u.PRS_PERSLID_INITIALEN=w.FAC_GEBRUIKER_USERNAME AND
f.FAC_FUNCTIE_KEY=w.FAC_FUNCTIE_KEY AND
f.FAC_FUNCTIE_CODE = 'WEB_PRSSYS';
END IF;
END;
END IF;
IF :old.PRS_AANMELD_SYS_OK is null and :new.PRS_AANMELD_SYS_OK is not null THEN
-- new employee processing is completed
BEGIN
-- refresh prs_perslid table
IF :new.Prs_aanmeld_titel_key IS NOT NULL THEN
SELECT nvl(FAC_USRDATA_OMSCHR,'')INTO mes FROM fac_usrdata
where fac_usrtab_key (+)= titel_key
and :new.Prs_aanmeld_titel_key = FAC_USRDATA_KEY(+);
ELSE
mes := '';
END IF;
update prs_perslid
set PRS_AFDELING_KEY =:new.Prs_afdeling_key,
PRS_PERSLID_NAAM = :new.Prs_aanmeld_naam,
PRS_PERSLID_TITEL = mes,
PRS_PERSLID_NR = :new.Prs_aanmeld_persnr,
PRS_PERSLID_INGANGSDATUM = :new.prs_aanmeld_datumbadgestart,
PRS_PERSLID_EINDDATUM = :new.prs_aanmeld_datumbadgeend,
PRS_PERSLID_TELEFOONNR = :new.prs_aanmeld_telintern,
PRS_PERSLID_AANMAAK = :new.Prs_aanmeld_aanmaak
where prs_perslid_key = :new.prs_perslid_key;
-- copy the rest of data into prs_kenmerk
-- copy email address
mes := null;
IF :new.PRS_AANMELD_EMAIL is not null THEN
BEGIN
select PRS_KENMERKLINK_WAARDE into mes from PRS_KENMERKLINK
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = email_key;
EXCEPTION WHEN NO_DATA_FOUND THEN null;
END;
IF mes is null THEN
insert into PRS_KENMERKLINK (PRS_KENMERKLINK_KEY,
PRS_LINK_KEY, PRS_KENMERK_KEY, PRS_KENMERKLINK_WAARDE, PRS_KENMERKLINK_NIVEAU )
values( prs_s_prs_kenmerkLink_key.NextVal, :new.prs_perslid_key,
email_key, :new.PRS_AANMELD_EMAIL ,'P');
ELSE
update PRS_KENMERKLINK set PRS_KENMERKLINK_WAARDE = :new.PRS_AANMELD_EMAIL
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = email_key;
END IF;
END IF;
-- copy mobile phone
mes := null;
IF :new.PRS_AANMELD_MOBIEL is not null THEN
BEGIN
select PRS_KENMERKLINK_WAARDE into mes from PRS_KENMERKLINK
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = mphone_key;
EXCEPTION WHEN NO_DATA_FOUND THEN null;
END;
IF mes is null THEN
insert into PRS_KENMERKLINK (PRS_KENMERKLINK_KEY,
PRS_LINK_KEY, PRS_KENMERK_KEY, PRS_KENMERKLINK_WAARDE, PRS_KENMERKLINK_NIVEAU )
values( prs_s_prs_kenmerkLink_key.NextVal, :new.prs_perslid_key,
mphone_key, :new.PRS_AANMELD_MOBIEL ,'P');
ELSE
update PRS_KENMERKLINK set PRS_KENMERKLINK_WAARDE = :new.PRS_AANMELD_MOBIEL
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = mphone_key;
END IF;
END IF;
-- copy badge number
mes := null;
IF :new.PRS_AANMELD_DEFBADGENR is not null THEN
BEGIN
select PRS_KENMERKLINK_WAARDE into mes from PRS_KENMERKLINK
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = badgen_key;
EXCEPTION WHEN NO_DATA_FOUND THEN null;
END;
IF mes is null THEN
insert into PRS_KENMERKLINK (PRS_KENMERKLINK_KEY,
PRS_LINK_KEY, PRS_KENMERK_KEY, PRS_KENMERKLINK_WAARDE, PRS_KENMERKLINK_NIVEAU )
values( prs_s_prs_kenmerkLink_key.NextVal, :new.prs_perslid_key,
badgen_key, :new.PRS_AANMELD_DEFBADGENR ,'P');
ELSE
update PRS_KENMERKLINK set PRS_KENMERKLINK_WAARDE = :new.PRS_AANMELD_DEFBADGENR
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = badgen_key;
END IF;
END IF;
-- copy badge sort
mes := null;
IF :new.PRS_AANMELD_BADGESOORT is not null THEN
BEGIN
select PRS_KENMERKLINK_WAARDE into mes from PRS_KENMERKLINK
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = badges_key;
EXCEPTION WHEN NO_DATA_FOUND THEN null;
END;
IF mes is null THEN
insert into PRS_KENMERKLINK (PRS_KENMERKLINK_KEY,
PRS_LINK_KEY, PRS_KENMERK_KEY, PRS_KENMERKLINK_WAARDE, PRS_KENMERKLINK_NIVEAU )
values( prs_s_prs_kenmerkLink_key.NextVal, :new.prs_perslid_key,
badges_key, :new.PRS_AANMELD_BADGESOORT ,'P');
ELSE
update PRS_KENMERKLINK set PRS_KENMERKLINK_WAARDE = :new.PRS_AANMELD_BADGESOORT
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = badges_key;
END IF;
END IF;
END;
DELETE FROM WEB_USER_MESSAGES
WHERE web_user_mess_actions_key = AanmeldActKey
AND web_user_mess_action_params = :new.prs_aanmeld_key;
END IF;
IF :old.PRS_AANMELD_WERKPLEK_OPLOC = 1 and :new.PRS_AANMELD_WERKPLEK_OPLOC = 0 THEN
-- delete new employee information from the database
delete from prs_kenmerklink where PRS_LINK_KEY = :new.PRS_PERSLID_KEY;
delete from prs_perslidwerkplek where prs_perslid_key = :new.PRS_PERSLID_KEY;
delete from prs_perslid where prs_perslid_key = :new.PRS_PERSLID_KEY;
:new.PRS_PERSLID_KEY := null;
END IF;
keepmes := 7;
delete from WEB_USER_MESSAGES where WEB_USER_MESS_ACTION_DATUM < (SYSDATE - keepmes);
END;
END;
/
#endif //PRA