Files
Database/_UP/320TO330.SRC
Peter Feij 090d0b8f7a 2 nieuwe menu-teksten toegevoegd, nu niet onder ALG maar onde FAC
svn path=/Database/trunk/; revision=7588
2000-12-01 12:51:24 +00:00

954 lines
36 KiB
Plaintext

SET TERMOUT ON
SET FEEDBACK OFF
SET ECHO OFF
--
-- Update script van Facilitor 3.0 versie 3.20 naar 3.30
--
/*
* 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.
*/
#ifdef MASTER
SPOOL OFF
set heading off
clear screen
PROMPT ***********************************************************************
PROMPT
PROMPT UPGRADE SCRIPT van Facilitor 3.0 versie 03.20 naar 03.30
PROMPT
SELECT 'De huidige versie van Facilitor zou moeten zijn 03.20 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 $320TO330.SQL
PROMPT SPOOL $320TO330.LST;
UPDMOD(FAC,320TO330)
UPDMOD(ALG,320TO330)
UPDMOD(INS,320TO330)
UPDMOD(PRS,320TO330)
UPDMOD(MLD,320TO330)
UPDMOD(CAD,320TO330)
UPDMOD(AKZ,320TO330)
UPDMOD(PRJ,320TO330)
UPDMOD(RES,320TO330)
UPDMOD(SCH,320TO330)
UPDMOD(SLE,320TO330)
UPDATE_VERSION('03.30');
COMMIT;
PROMPT SPOOL OFF;
SPOOL OFF
START $320TO330.SQL
#endif // MASTER
/* denk aan #ifdef constructies! */
/* PLAATS HIERONDER DE UPDATES */
/* Weer op de oude manier dus bijvoorbeeld :
#ifdef ALG
bla bla
#endif // ALG
etc.
*/
#ifdef ALG
#endif // ALG
#ifdef INS
alter table ins_kenmerk add(ins_kenmerk_locatiekolom VARCHAR2(30)
,ins_kenmerk_uniek NUMBER(1));
alter table ins_srtkenmerk modify (ins_srtkenmerk_lengte NUMBER(3));
alter table ins_srtkenmerk drop constraint ins_c_ins_srtkenmerk_lengte;
alter table ins_srtkenmerk add constraint ins_c_ins_srtkenmerk_lengte CHECK(ins_srtkenmerk_lengte >= 1
AND ins_srtkenmerk_lengte <= 255);
CREATE INDEX ins_i_ins_kenmerk_kenmerk2 ON ins_kenmerkdeel(ins_kenmerkdeel_waarde);
CREATE_VIEW(ins_v_srtdeel_kenmerk, INS_BIBLIOTHEEK_PRIVILEGE)
(ins_kenmerk_key,
ins_srtkenmerk_key,
ins_srtinstallatie_key,
ins_kenmerk_niveau,
ins_kenmerk_verplicht,
ins_kenmerk_toonbaar,
ins_kenmerk_uniek,
ins_kenmerk_locatiekolom,
ins_kenmerk_volgnummer,
ins_srtkenmerk_omschrijving,
ins_srtkenmerk_dimensie,
ins_srtkenmerk_kenmerktype,
ins_srtkenmerk_lengte,
ins_srtkenmerk_dec,
ins_srtkenmerk_nmin,
ins_srtkenmerk_nmax,
ins_refsrtkenmerk_key,
ins_srtdeel_key,
ins_srtdeel_omschrijving,
ins_srtdeel_upper,
ins_srtgroep_key,
ins_srtgroep_omschrijving,
ins_srtgroep_upper,
ins_discipline_key,
ins_discipline_omschrijving) AS
SELECT INS_K.ins_kenmerk_key,
INS_K.ins_srtkenmerk_key,
INS_K.ins_srtinstallatie_key,
INS_K.ins_kenmerk_niveau,
INS_K.ins_kenmerk_verplicht,
INS_K.ins_kenmerk_toonbaar,
INS_K.ins_kenmerk_uniek,
INS_K.ins_kenmerk_locatiekolom,
INS_K.ins_kenmerk_volgnummer,
INS_SK.ins_srtkenmerk_omschrijving,
INS_SK.ins_srtkenmerk_dimensie,
INS_SK.ins_srtkenmerk_kenmerktype,
INS_SK.ins_srtkenmerk_lengte,
INS_SK.ins_srtkenmerk_dec,
INS_SK.ins_srtkenmerk_nmin,
INS_SK.ins_srtkenmerk_nmax,
INS_SK.ins_refsrtkenmerk_key,
INS_SD.ins_srtdeel_key,
INS_SD.ins_srtdeel_omschrijving,
INS_SD.ins_srtdeel_upper,
INS_SG.ins_srtgroep_key,
INS_SG.ins_srtgroep_omschrijving,
INS_SG.ins_srtgroep_upper,
INS_D.ins_discipline_key,
INS_D.ins_discipline_omschrijving
FROM ins_kenmerk INS_K
, ins_srtkenmerk INS_SK
, ins_v_aanwezigsrtdeel INS_SD
, ins_srtgroep INS_SG
, ins_discipline INS_D
WHERE INS_K.ins_srtkenmerk_key = INS_SK.ins_srtkenmerk_key
AND INS_K.ins_kenmerk_niveau = 'S'
AND INS_SD.ins_srtdeel_key = INS_K.ins_srtinstallatie_key
AND INS_SD.ins_srtgroep_key = INS_SG.ins_srtgroep_key
AND INS_SG.ins_discipline_key = INS_D.ins_discipline_key
UNION
SELECT INS_K.ins_kenmerk_key,
INS_K.ins_srtkenmerk_key,
INS_K.ins_srtinstallatie_key,
INS_K.ins_kenmerk_niveau,
INS_K.ins_kenmerk_verplicht,
INS_K.ins_kenmerk_toonbaar,
INS_K.ins_kenmerk_uniek,
INS_K.ins_kenmerk_locatiekolom,
INS_K.ins_kenmerk_volgnummer,
INS_SK.ins_srtkenmerk_omschrijving,
INS_SK.ins_srtkenmerk_dimensie,
INS_SK.ins_srtkenmerk_kenmerktype,
INS_SK.ins_srtkenmerk_lengte,
INS_SK.ins_srtkenmerk_dec,
INS_SK.ins_srtkenmerk_nmin,
INS_SK.ins_srtkenmerk_nmax,
INS_SK.ins_refsrtkenmerk_key,
INS_SD.ins_srtdeel_key,
INS_SD.ins_srtdeel_omschrijving,
INS_SD.ins_srtdeel_upper,
INS_SG.ins_srtgroep_key,
INS_SG.ins_srtgroep_omschrijving,
INS_SG.ins_srtgroep_upper,
INS_D.ins_discipline_key,
INS_D.ins_discipline_omschrijving
FROM ins_kenmerk INS_K
, ins_srtkenmerk INS_SK
, ins_v_aanwezigsrtdeel INS_SD
, ins_v_aanwezigsrtgroep INS_SG
, ins_discipline INS_D
WHERE INS_K.ins_srtkenmerk_key = INS_SK.ins_srtkenmerk_key
AND INS_K.ins_kenmerk_niveau = 'G'
AND INS_SD.ins_srtgroep_key = INS_SG.ins_srtgroep_key
AND INS_SG.ins_srtgroep_key = INS_K.ins_srtinstallatie_key
AND INS_SG.ins_discipline_key = INS_D.ins_discipline_key
UNION
SELECT INS_K.ins_kenmerk_key,
INS_K.ins_srtkenmerk_key,
INS_K.ins_srtinstallatie_key,
INS_K.ins_kenmerk_niveau,
INS_K.ins_kenmerk_verplicht,
INS_K.ins_kenmerk_toonbaar,
INS_K.ins_kenmerk_uniek,
INS_K.ins_kenmerk_locatiekolom,
INS_K.ins_kenmerk_volgnummer,
INS_SK.ins_srtkenmerk_omschrijving,
INS_SK.ins_srtkenmerk_dimensie,
INS_SK.ins_srtkenmerk_kenmerktype,
INS_SK.ins_srtkenmerk_lengte,
INS_SK.ins_srtkenmerk_dec,
INS_SK.ins_srtkenmerk_nmin,
INS_SK.ins_srtkenmerk_nmax,
INS_SK.ins_refsrtkenmerk_key,
INS_SD.ins_srtdeel_key,
INS_SD.ins_srtdeel_omschrijving,
INS_SD.ins_srtdeel_upper,
INS_SG.ins_srtgroep_key,
INS_SG.ins_srtgroep_omschrijving,
INS_SG.ins_srtgroep_upper,
INS_D.ins_discipline_key,
INS_D.ins_discipline_omschrijving
FROM ins_kenmerk INS_K
, ins_srtkenmerk INS_SK
, ins_v_aanwezigsrtdeel INS_SD
, ins_v_aanwezigsrtgroep INS_SG
, ins_v_aanwezigdiscipline INS_D
WHERE INS_K.ins_srtkenmerk_key = INS_SK.ins_srtkenmerk_key
AND INS_K.ins_kenmerk_niveau = 'D'
AND INS_SD.ins_srtgroep_key = INS_SG.ins_srtgroep_key
AND INS_SG.ins_discipline_key = INS_D.ins_discipline_key
AND( INS_D.ins_discipline_key = INS_K.ins_srtinstallatie_key
OR INS_K.ins_srtinstallatie_key IS NULL);
CREATE_VIEW(ins_v_kenmerk_gegevens, INS_BIBLIOTHEEK_PRIVILEGE)
(ins_kenmerk_key,
ins_srtkenmerk_key,
ins_kenmerk_niveau,
ins_kenmerk_verplicht,
ins_kenmerk_toonbaar,
ins_kenmerk_uniek,
ins_kenmerk_locatiekolom,
ins_kenmerk_volgnummer,
ins_srtkenmerk_omschrijving,
ins_srtkenmerk_dimensie,
ins_srtkenmerk_kenmerktype,
ins_srtkenmerk_lengte,
ins_srtkenmerk_dec,
ins_srtkenmerk_nmin,
ins_srtkenmerk_nmax,
ins_refsrtkenmerk_key,
ins_srtdeel_key,
ins_srtdeel_omschrijving,
ins_srtdeel_upper,
ins_srtgroep_key,
ins_srtgroep_omschrijving,
ins_srtgroep_upper,
ins_discipline_key,
ins_discipline_omschrijving) AS
SELECT INS_K.ins_kenmerk_key,
INS_K.ins_srtkenmerk_key,
INS_K.ins_kenmerk_niveau,
INS_K.ins_kenmerk_verplicht,
INS_K.ins_kenmerk_toonbaar,
INS_K.ins_kenmerk_uniek,
INS_K.ins_kenmerk_locatiekolom,
INS_K.ins_kenmerk_volgnummer,
INS_SK.ins_srtkenmerk_omschrijving,
INS_SK.ins_srtkenmerk_dimensie,
INS_SK.ins_srtkenmerk_kenmerktype,
INS_SK.ins_srtkenmerk_lengte,
INS_SK.ins_srtkenmerk_dec,
INS_SK.ins_srtkenmerk_nmin,
INS_SK.ins_srtkenmerk_nmax,
INS_SK.ins_refsrtkenmerk_key,
INS_SD.ins_srtdeel_key,
INS_SD.ins_srtdeel_omschrijving,
INS_SD.ins_srtdeel_upper,
INS_SG.ins_srtgroep_key,
INS_SG.ins_srtgroep_omschrijving,
INS_SG.ins_srtgroep_upper,
INS_D.ins_discipline_key,
INS_D.ins_discipline_omschrijving
FROM ins_kenmerk INS_K, ins_srtkenmerk INS_SK,
ins_v_aanwezigsrtdeel INS_SD, ins_srtgroep INS_SG,
ins_discipline INS_D
WHERE INS_K.ins_srtkenmerk_key = INS_SK.ins_srtkenmerk_key
AND INS_K.ins_kenmerk_niveau = 'S'
AND INS_SD.ins_srtdeel_key = INS_K.ins_srtinstallatie_key
AND INS_SD.ins_srtgroep_key = INS_SG.ins_srtgroep_key
AND INS_SG.ins_discipline_key = INS_D.ins_discipline_key
UNION
SELECT INS_K.ins_kenmerk_key,
INS_K.ins_srtkenmerk_key,
INS_K.ins_kenmerk_niveau,
INS_K.ins_kenmerk_verplicht,
INS_K.ins_kenmerk_toonbaar,
INS_K.ins_kenmerk_uniek,
INS_K.ins_kenmerk_locatiekolom,
INS_K.ins_kenmerk_volgnummer,
INS_SK.ins_srtkenmerk_omschrijving,
INS_SK.ins_srtkenmerk_dimensie,
INS_SK.ins_srtkenmerk_kenmerktype,
INS_SK.ins_srtkenmerk_lengte,
INS_SK.ins_srtkenmerk_dec,
INS_SK.ins_srtkenmerk_nmin,
INS_SK.ins_srtkenmerk_nmax,
INS_SK.ins_refsrtkenmerk_key,
TO_NUMBER(NULL),
NULL,
NULL,
INS_SG.ins_srtgroep_key,
INS_SG.ins_srtgroep_omschrijving,
INS_SG.ins_srtgroep_upper,
INS_D.ins_discipline_key,
INS_D.ins_discipline_omschrijving
FROM ins_kenmerk INS_K, ins_srtkenmerk INS_SK,
ins_v_aanwezigsrtgroep INS_SG,
ins_discipline INS_D
WHERE INS_K.ins_srtkenmerk_key = INS_SK.ins_srtkenmerk_key
AND INS_K.ins_kenmerk_niveau = 'G'
AND INS_SG.ins_srtgroep_key = INS_K.ins_srtinstallatie_key
AND INS_SG.ins_discipline_key = INS_D.ins_discipline_key
UNION
SELECT INS_K.ins_kenmerk_key,
INS_K.ins_srtkenmerk_key,
INS_K.ins_kenmerk_niveau,
INS_K.ins_kenmerk_verplicht,
INS_K.ins_kenmerk_toonbaar,
INS_K.ins_kenmerk_uniek,
INS_K.ins_kenmerk_locatiekolom,
INS_K.ins_kenmerk_volgnummer,
INS_SK.ins_srtkenmerk_omschrijving,
INS_SK.ins_srtkenmerk_dimensie,
INS_SK.ins_srtkenmerk_kenmerktype,
INS_SK.ins_srtkenmerk_lengte,
INS_SK.ins_srtkenmerk_dec,
INS_SK.ins_srtkenmerk_nmin,
INS_SK.ins_srtkenmerk_nmax,
INS_SK.ins_refsrtkenmerk_key,
TO_NUMBER(NULL),
NULL,
NULL,
TO_NUMBER(NULL),
NULL,
NULL,
INS_D.ins_discipline_key,
INS_D.ins_discipline_omschrijving
FROM ins_kenmerk INS_K, ins_srtkenmerk INS_SK,
ins_v_aanwezigdiscipline INS_D
WHERE INS_K.ins_srtkenmerk_key = INS_SK.ins_srtkenmerk_key
AND INS_K.ins_kenmerk_niveau = 'D'
AND INS_K.ins_srtinstallatie_key = INS_D.ins_discipline_key
UNION
SELECT INS_K.ins_kenmerk_key,
INS_K.ins_srtkenmerk_key,
INS_K.ins_kenmerk_niveau,
INS_K.ins_kenmerk_verplicht,
INS_K.ins_kenmerk_toonbaar,
INS_K.ins_kenmerk_uniek,
INS_K.ins_kenmerk_locatiekolom,
INS_K.ins_kenmerk_volgnummer,
INS_SK.ins_srtkenmerk_omschrijving,
INS_SK.ins_srtkenmerk_dimensie,
INS_SK.ins_srtkenmerk_kenmerktype,
INS_SK.ins_srtkenmerk_lengte,
INS_SK.ins_srtkenmerk_dec,
INS_SK.ins_srtkenmerk_nmin,
INS_SK.ins_srtkenmerk_nmax,
INS_SK.ins_refsrtkenmerk_key,
TO_NUMBER(NULL),
NULL,
NULL,
TO_NUMBER(NULL),
NULL,
NULL,
TO_NUMBER(NULL),
NULL
FROM ins_kenmerk INS_K, ins_srtkenmerk INS_SK
WHERE INS_K.ins_srtkenmerk_key = INS_SK.ins_srtkenmerk_key
AND INS_K.ins_kenmerk_niveau = 'D'
AND INS_K.ins_srtinstallatie_key IS NULL;
CREATE_VIEW(ins_v_srtdeel_kenmerkdeel, INS_BIBLIOTHEEK_PRIVILEGE)
(ins_kenmerk_key,
ins_srtkenmerk_key,
ins_kenmerk_niveau,
ins_kenmerk_verplicht,
ins_kenmerk_toonbaar,
ins_kenmerk_uniek,
ins_kenmerk_locatiekolom,
ins_kenmerk_volgnummer,
ins_srtkenmerk_omschrijving,
ins_srtkenmerk_dimensie,
ins_srtkenmerk_kenmerktype,
ins_srtkenmerk_lengte,
ins_srtkenmerk_dec,
ins_srtkenmerk_nmin,
ins_srtkenmerk_nmax,
ins_refsrtkenmerk_key,
ins_srtdeel_key,
ins_srtgroep_key,
ins_discipline_key,
ins_kenmerkdeel_key,
ins_deel_key,
ins_kenmerkdeel_waarde) AS
SELECT INS_SDK.ins_kenmerk_key,
INS_SDK.ins_srtkenmerk_key,
INS_SDK.ins_kenmerk_niveau,
INS_SDK.ins_kenmerk_verplicht,
INS_SDK.ins_kenmerk_toonbaar,
INS_SDK.ins_kenmerk_uniek,
INS_SDK.ins_kenmerk_locatiekolom,
INS_SDK.ins_kenmerk_volgnummer,
INS_SDK.ins_srtkenmerk_omschrijving,
INS_SDK.ins_srtkenmerk_dimensie,
INS_SDK.ins_srtkenmerk_kenmerktype,
INS_SDK.ins_srtkenmerk_lengte,
INS_SDK.ins_srtkenmerk_dec,
INS_SDK.ins_srtkenmerk_nmin,
INS_SDK.ins_srtkenmerk_nmax,
INS_SDK.ins_refsrtkenmerk_key,
INS_SDK.ins_srtdeel_key,
INS_SDK.ins_srtgroep_key,
INS_SDK.ins_discipline_key,
INS_KD.ins_kenmerkdeel_key,
INS_D.ins_deel_key,
INS_KD.ins_kenmerkdeel_waarde
FROM ins_v_aanwezigdeel INS_D,
ins_kenmerkdeel INS_KD,
ins_v_srtdeel_kenmerk INS_SDK
WHERE INS_D.ins_deel_key = INS_KD.ins_deel_key
AND INS_D.ins_srtdeel_key = INS_SDK.ins_srtdeel_key
AND INS_SDK.ins_kenmerk_key = INS_KD.ins_kenmerk_key
UNION
SELECT INS_SDK.ins_kenmerk_key,
INS_SDK.ins_srtkenmerk_key,
INS_SDK.ins_kenmerk_niveau,
INS_SDK.ins_kenmerk_verplicht,
INS_SDK.ins_kenmerk_toonbaar,
INS_SDK.ins_kenmerk_uniek,
INS_SDK.ins_kenmerk_locatiekolom,
INS_SDK.ins_kenmerk_volgnummer,
INS_SDK.ins_srtkenmerk_omschrijving,
INS_SDK.ins_srtkenmerk_dimensie,
INS_SDK.ins_srtkenmerk_kenmerktype,
INS_SDK.ins_srtkenmerk_lengte,
INS_SDK.ins_srtkenmerk_dec,
INS_SDK.ins_srtkenmerk_nmin,
INS_SDK.ins_srtkenmerk_nmax,
INS_SDK.ins_refsrtkenmerk_key,
INS_SDK.ins_srtdeel_key,
INS_SDK.ins_srtgroep_key,
INS_SDK.ins_discipline_key,
TO_NUMBER(NULL),
INS_D.ins_deel_key,
NULL
FROM ins_v_aanwezigdeel INS_D,
ins_v_srtdeel_kenmerk INS_SDK
WHERE INS_D.ins_srtdeel_key = INS_SDK.ins_srtdeel_key
AND NOT EXISTS (SELECT INS_KD.ins_deel_key
FROM ins_kenmerkdeel INS_KD
WHERE INS_KD.ins_deel_key = INS_D.ins_deel_key
AND INS_KD.ins_kenmerk_key = INS_SDK.ins_kenmerk_key)
UNION
SELECT INS_SDK.ins_kenmerk_key,
INS_SDK.ins_srtkenmerk_key,
INS_SDK.ins_kenmerk_niveau,
INS_SDK.ins_kenmerk_verplicht,
INS_SDK.ins_kenmerk_toonbaar,
INS_SDK.ins_kenmerk_uniek,
INS_SDK.ins_kenmerk_locatiekolom,
INS_SDK.ins_kenmerk_volgnummer,
INS_SDK.ins_srtkenmerk_omschrijving,
INS_SDK.ins_srtkenmerk_dimensie,
INS_SDK.ins_srtkenmerk_kenmerktype,
INS_SDK.ins_srtkenmerk_lengte,
INS_SDK.ins_srtkenmerk_dec,
INS_SDK.ins_srtkenmerk_nmin,
INS_SDK.ins_srtkenmerk_nmax,
INS_SDK.ins_refsrtkenmerk_key,
INS_SDK.ins_srtdeel_key,
INS_SDK.ins_srtgroep_key,
INS_SDK.ins_discipline_key,
TO_NUMBER(NULL),
TO_NUMBER(NULL),
NULL
FROM ins_v_srtdeel_kenmerk INS_SDK;
DEF_FAC_MESSAGE ('INS_M188', 'Het locatie gebonden veld komt niet voor in de referentie tabel/view.');
DEF_FAC_MESSAGE ('INS_M189', 'Het referentieveld voor locatiegebonden moet ingevuld worden.');
DEF_FAC_MESSAGE ('INS_M190', 'Binnen een Locatie en Deelsoort is dit kenmerk niet uniek.');
DEF_FAC_MESSAGE ('INS_M191', 'Toevoegen/wijzigen unieke kenmerkwaarde %1% niet mogelijk bij meerdere objecten.');
DEF_FAC_MESSAGE ('INS_M192', 'De waarde "%1%" bestaat al voor het unieke kenmerk %2%.');
DEF_FAC_MESSAGE ('INS_M193', 'U hebt niet genoeg rechten om deze functie te gebruiken.');
DEF_FAC_MESSAGE ('INS_KENMERK_LOCATIEGEBONDEN', 'Locatie gebonden');
DEF_FAC_ENTITY ('INS_KENMERK_UNIEK', 'Uniek', null, null);
CREATE_TRIGGER(ins_t_ins_deel_B_IU)
BEFORE INSERT OR UPDATE ON ins_deel
FOR EACH ROW
BEGIN
-- LET OP : Deze trigger is ook gedefinieerd in RES !!
UPDATE_PRIMARY_KEY(ins_deel_key,ins_s_ins_inst_keys);
UPDATE_UPPER(ins_deel_omschrijving,ins_deel_upper);
-- Indien verplaatsing of verwijdering of reincarnatie dan alleen vanuit de
-- CAD-omgeving, d.i. als tegelijk ins_deel_getekend een nieuwe waarde krijgt.
-- Dus een foutmelding als dit niet zo is.
CHECK_CADMUTATIE2(ins_deel_verwijder, ins_deel_getekend, ins_alg_ruimte_key, 'ins_m187');
IF :new.ins_deel_parent_key IS NULL
THEN
DECLARE
Dummy BOOLEAN;
BEGIN
--Dummy := fac_p_fac_save_restore.SavePrimaryKey('INS_DEEL_VERWIJDER', :new.ins_deel_key);
Dummy := fac_p_fac_save_restore.SavePrimaryKeyAndDate('INS_DEEL_VERWIJDER', :new.ins_deel_key, :old.ins_deel_verwijder);
END;
END IF;
IF :new.ins_deel_verwijder IS NOT NULL
THEN
DECLARE
Dummy BOOLEAN;
BEGIN
Dummy := fac_p_fac_save_restore.SavePrimaryKey('INS_DEEL_ONTKOPPEL', :new.ins_deel_key);
END;
END IF;
-- Vul het veld INS_DISCIPLINE van het huidige deel.
IF :old.ins_srtdeel_key IS NULL
OR :old.ins_srtdeel_key <> :new.ins_srtdeel_key
OR :old.ins_discipline_key IS NULL
THEN
BEGIN
SELECT INS_D.ins_discipline_key
INTO :new.ins_discipline_key
FROM ins_srtdeel INS_SD
, ins_srtgroep INS_SG
, ins_tab_discipline INS_D
WHERE INS_SD.ins_srtdeel_key = :new.ins_srtdeel_key
AND INS_SD.ins_srtgroep_key = INS_SG.ins_srtgroep_key
AND INS_SG.ins_discipline_key = INS_D.ins_discipline_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN :new.ins_discipline_key := NULL;
END;
END IF;
-- Zoek de (redundante) alg_locatie_key erbij indien verplaatst.
IF :old.ins_alg_ruimte_key IS NULL
OR :old.ins_alg_ruimte_key <> :new.ins_alg_ruimte_key
OR :new.ins_alg_locatie_key IS NULL
THEN
BEGIN
SELECT alg_locatie_key
INTO :new.ins_alg_locatie_key
FROM ins_v_alg_overzicht
WHERE alg_onroerendgoed_keys = :new.ins_alg_ruimte_key
AND alg_onroerendgoed_type = :new.ins_alg_ruimte_type;
EXCEPTION
WHEN NO_DATA_FOUND
THEN :new.ins_alg_locatie_key := NULL;
END;
END IF;
/* Bij INS_DEEL in INS-mode moet INS_ALG_RUIMTE_KEY ingevuld zijn
* en wel met ruimte, verdieping, gebouw of terreinsector.
* Daarvoor moet ook het INS_ALG_RUIMTE_TYPE veld goed ingevuld zijn
* (met 'R' of 'V' of 'G' of 'T').
* Dit geldt als INS_ALG_RUIMTE_KEY veranderd is of als er een
* nieuw record geinsert wordt.
*
*
* IN INV-mode hoeft INS_ALG_RUIMTE_KEY niet ingevuld te zijn, maar
* als deze ingevuld is moet INS_ALG_RUIMTE_KEY met ruimte of werkplek
* gevuld zijn, daarvoor moet het veld INS_ALG_RUITMTE_KEY goed
* ingevuld zijn (met 'R' of 'W').
*
* IN INV-mode kan het veld INS_PRS_BEZIT_KEY ook ingevuld zijn, maar
* INS_ALG_RUIMTE_KEY en INS_PRS_BEZIT_KEY kunnen niet beide ingevuld worden.
* INS_PRS_BEZIT_KEY kan de waarde perslid of afdeling bevatten en het
* veld INS_PRS_BEZIT_TYPE moet dan goed ingevuld zijn (met 'P' of 'A').
* AH 05-06-96 Nu kunnen biede velden ingevuld zijn.
*/
IF :new.ins_deel_module = 'INS'
AND (:old.ins_alg_ruimte_key <> :new.ins_alg_ruimte_key
OR :old.ins_alg_ruimte_key IS NULL)
THEN
IF :new.ins_alg_ruimte_type = 'W' /* 990218/BIV - #2251 - Deel kan ook op werkplek worden geplaatst */
THEN
CHECK_KEY_REFERENCE(prs_v_aanwezigwerkplek , prs_werkplek_key , :new.ins_alg_ruimte_key, 'ins_m174');
ELSIF :new.ins_alg_ruimte_type = 'R'
THEN
CHECK_KEY_REFERENCE(alg_v_aanwezigruimte , alg_ruimte_key , :new.ins_alg_ruimte_key, 'ins_m092');
ELSIF :new.ins_alg_ruimte_type = 'T'
THEN
CHECK_KEY_REFERENCE(alg_v_aanwezigterreinsector, alg_terreinsector_key, :new.ins_alg_ruimte_key, 'ins_m095');
ELSE
APPLICATION_ERROR(-20000, 'ins_m84');
END IF;
DECLARE
Dummy BOOLEAN;
BEGIN
-- Alleen bestaande delen hebben mogelijk te verplaatsen onderdelen.
IF :old.ins_deel_aanmaak IS NOT NULL
AND :new.ins_deel_parent_key IS NULL
THEN
Dummy := fac_p_fac_save_restore.SavePrimaryKey('INS_DEEL_CASCADE', :new.ins_deel_key);
END IF;
END;
END IF;
UPDATE_AANMAAKDATUM(ins_deel, ins_deel_aanmaak);
END;
/
CREATE_TRIGGER(ins_t_ins_deel_S_A_IU)
AFTER UPDATE ON ins_deel
BEGIN
DECLARE
IndexNr NUMBER;
PrimaryKey NUMBER(10);
Dummy BOOLEAN;
lNested NUMBER;
lCount NUMBER;
deletemode DATE;
old_datum_of_deel DATE;
BEGIN
-- We controleren of we zijn aangeroepen vanuit onszelf. Ook al hebben we daarbij
-- geen keys aan fac_selectie toegevoegd, die van het hoogste niveau staan er, en
-- die moeten we niet weer vanaf nummer 1 gaan behandelen, anders zitten we echt
-- in een oneindige loop.
-- We krijgen hier geen mee, omdat we geen onderdelen van onderdelen kennen.
lNested := fac_p_fac_save_restore.GetPrimaryKey('INS_TRIGGER_BUSY', 1);
IF lNested IS NULL
THEN
IndexNr := 1;
PrimaryKey := fac_p_fac_save_restore.GetPrimaryKey('INS_DEEL_VERWIJDER', IndexNr);
old_datum_of_deel := fac_p_fac_save_restore.GetDate('INS_DEEL_VERWIJDER', PrimaryKey);
WHILE PrimaryKey IS NOT NULL
LOOP
Dummy := fac_p_fac_save_restore.SavePrimaryKey('INS_TRIGGER_BUSY', 1);
/* Jammer maar helaas, vanwege syntaxredenen moeten we weten of we met UNDO te maken hebben
/* Als parent is verwijderd, dan is deletemode gevuld met zijn datum */
/* Als parent terug wordt gehaald, dan is delete-mode gevuld met NULL ( betekent FALSE) */
SELECT ins_deel_verwijder
INTO deletemode
FROM ins_deel
WHERE ins_deel_key = PrimaryKey;
IF deletemode IS NULL /* Het deel wordt terug gehaald (UNDO) */
THEN
UPDATE ins_deel
SET ins_deel_verwijder = NULL /* Bijbehorende onderdelen ook terughalen */
WHERE ins_deel.ins_deel_parent_key = PrimaryKey
AND ins_deel.ins_deel_verwijder = old_datum_of_deel;
ELSE
/* Het deel wordt (of beter: is) verwijderd */
UPDATE ins_deel
SET ins_deel_verwijder = deletemode /* Alle AANWEZIGE onderdelen verwijderen */
WHERE ins_deel.ins_deel_parent_key = PrimaryKey
AND ins_deel.ins_deel_verwijder IS NULL;
END IF;
Dummy := fac_p_fac_save_restore.ResetSelectie('INS_TRIGGER_BUSY');
IndexNr := IndexNr + 1;
PrimaryKey := fac_p_fac_save_restore.GetPrimaryKey('INS_DEEL_VERWIJDER', IndexNr);
old_datum_of_deel := fac_p_fac_save_restore.GetDate('INS_DEEL_VERWIJDER', PrimaryKey);
END LOOP;
Dummy := fac_p_fac_save_restore.ResetSelectie('INS_DEEL_VERWIJDER');
IndexNr := 1;
PrimaryKey := fac_p_fac_save_restore.GetPrimaryKey('INS_DEEL_CASCADE', IndexNr);
WHILE PrimaryKey IS NOT NULL
LOOP
-- Om weer te voorkomen dat de BEFORE STATEMENT trigger onnodig vuurt, controleren
-- we eerst of het statement wel nodig is, d.i. of er onderdelen zijn die nog
-- verplaatst moeten worden.
SELECT COUNT(*)
INTO lCount
FROM ins_deel
WHERE ins_deel.ins_deel_parent_key = PrimaryKey
AND ins_deel.ins_deel_verwijder IS NULL;
IF lCount > 0
THEN
Dummy := fac_p_fac_save_restore.SavePrimaryKey('INS_TRIGGER_BUSY', 1);
UPDATE ins_deel
SET (ins_alg_ruimte_key
, ins_alg_ruimte_type
, ins_alg_locatie_key) = (SELECT ins_alg_ruimte_key
, ins_alg_ruimte_type
, ins_alg_locatie_key
FROM ins_deel
WHERE ins_deel_key = PrimaryKey)
WHERE ins_deel.ins_deel_parent_key = PrimaryKey
AND ins_deel.ins_deel_verwijder IS NULL;
Dummy := fac_p_fac_save_restore.ResetSelectie('INS_TRIGGER_BUSY');
END IF;
IndexNr := IndexNr + 1;
PrimaryKey := fac_p_fac_save_restore.GetPrimaryKey('INS_DEEL_CASCADE', IndexNr);
END LOOP;
Dummy := fac_p_fac_save_restore.ResetSelectie('INS_DEEL_CASCADE');
ELSE
NULL;
END IF; -- lNested
END;
-- Add statements that need execution even when nested here:
--
-- Attentie: Alle koppelingen met delen uit de selectie worden verwijderd. Doordat deze
-- selectie tijdens deze transactie groter kan worden door de bijbehorende onderdelen, wordt
-- mogelijkerwijs vaker ins_p_delete_deelkoppeling() aangeroepen dan strikt nodig is (de reeds
-- aanwezige keys blijven oon staan). Dit is niet echt een probleem in de huidige context, maar
-- kan dat worden als die functie veel tijd kost ook al is er niks te doen.
DECLARE
IndexNr NUMBER;
PrimaryKey NUMBER(10);
Dummy BOOLEAN;
BEGIN
IndexNr := 1;
PrimaryKey := fac_p_fac_save_restore.GetPrimaryKey('INS_DEEL_ONTKOPPEL', IndexNr);
WHILE PrimaryKey IS NOT NULL
LOOP
Dummy := ins_p_delete_deelkoppeling(PrimaryKey);
IndexNr := IndexNr + 1;
PrimaryKey := fac_p_fac_save_restore.GetPrimaryKey('INS_DEEL_ONTKOPPEL', IndexNr);
END LOOP;
Dummy := fac_p_fac_save_restore.ResetSelectie('INS_DEEL_ONTKOPPEL');
END;
END;
/
#endif // INS
#ifdef FAC
/* Module onafhankelijk: */
DEF_FAC_ENTITY ('MENU_ALGEMEEN' , 'Algemeen', NULL, NULL, 'General');
DEF_FAC_ENTITY ('MENU_ALG_AUTORISATIE' , 'Autorisatie', NULL, NULL, 'Authorization');
DEF_FAC_ENTITY ('MENU_STOP' , 'Stoppen', NULL, NULL, 'Quit');
DEF_FAC_ENTITY ('MENU_REGISTRATIE' , 'Registratie', NULL, NULL, 'Registration');
DEF_FAC_ENTITY ('MENU_BIBLIOTHEEK' , 'Bibliotheek', NULL, NULL, 'Library');
DEF_FAC_ENTITY ('MENU_PRS_RUIMTEGEBR' , 'Ruimtegebruik', NULL, NULL, 'Room usage');
DEF_FAC_ENTITY ('MENU_PRS_BEDRIJF' , 'Bedrijf', NULL, NULL, 'Company');
DEF_FAC_ENTITY ('MENU_HELP_INHOUD' , 'Inhoud', NULL, NULL, 'Contents');
DEF_FAC_ENTITY ('MENU_HELP_OVER' , 'Over' , NULL, NULL, 'About');
DEF_FAC_ENTITY ('MENU_MLD_KOSTENPOST' , 'Kostenpost', NULL, NULL, 'C'||CHR(38)||'osts category');
DEF_FAC_ENTITY ('MENU_MLD_ADRES' , 'Adresgegevens', NULL, NULL,'Addresses');
DEF_FAC_ENTITY ('MENU_MLD_BESTEL' , 'Bestelorder', NULL, NULL,'Order '||CHR(38)||'receipt');
DEF_FAC_ENTITY ('MENU_MLD_EXPORT' , 'Exporteren', NULL, NULL, 'Export');
DEF_FAC_ENTITY ('MENU_KENMERK' , 'Kenmerken' ,NULL, NULL,'Properties');
DEF_FAC_ENTITY ('MENU_FAC_GEBRUIKERS' , 'LAN-Gebruikers', NULL, NULL, 'LAN users');
DEF_FAC_ENTITY ('MENU_FAC_WEBUSERS' , 'WEB-Gebruikers', NULL, NULL, 'WEB users');
DEF_FAC_MESSAGE ('FAC_M044', 'Weet u zeker dat u wilt stoppen ?', 'Are you sure you want to quit?');
DEF_FAC_MESSAGE ('MENU_MLD_OPDR2' ,'Standaard opdracht','Standard order');
ALTER TABLE fac_usrdata DROP CONSTRAINT fac_u_fac_usrdata_upper;
ALTER TABLE fac_usrdata ADD CONSTRAINT fac_u_fac_usrdata_upper UNIQUE(fac_usrdata_upper,fac_usrtab_key,fac_usrdata_verwijder);
CREATE INDEX fac_i_fac_gebruiker3 ON fac_gebruiker(fac_functie_key);
CREATE INDEX fac_i_fac_gebruiker4 ON fac_gebruiker(fac_gebruiker_username,fac_gebruiker_kolom,fac_gebruiker_module);
DEF_FAC_ENTITY ('FAC_PRINTER_EMAIL', 'E-mail', NULL, NULL);
DEF_FAC_ENTITY ('FAC_PRINTER_EMAILADDRESS','E-mail adres', NULL, NULL);
DEF_FAC_MESSAGE ('FAC_M042', 'E-mail adres is niet ingevuld.');
DEF_FAC_MESSAGE ('FAC_M043', 'Fout opgetreden tijdens het opstarten van het E-mail programma.');
ALTER TABLE fac_selectie ADD fac_selectie_datum DATE;
UPDATE FAC_MESSAGE
SET FAC_MESSAGE_TEXT = 'Facilitor 3.3'
WHERE FAC_MESSAGE_CODE = 'FAC_M002';
UPDATE FAC_MESSAGE
SET FAC_MESSAGE_TEXT = 'Welkom bij Facilitor 3.3'
WHERE FAC_MESSAGE_CODE = 'FAC_M035';
UPDATE FAC_MESSAGE
SET FAC_MESSAGE_TEXT = 'Copyright (c) 1996-2000, Facilitor Software Nederland bv'
WHERE FAC_MESSAGE_CODE = 'FAC_M005';
CREATE OR REPLACE PACKAGE fac_p_fac_save_restore AS
-- Maak de vorige selectie van de tabel en de huidige sessie leeg.
FUNCTION ResetSelectie( TableName IN VARCHAR2 ) RETURN BOOLEAN;
-- Onthou de primary key van de tabel en de huidige sessie.
FUNCTION SavePrimaryKey( TableName IN VARCHAR2, PrimaryKey IN NUMBER ) RETURN BOOLEAN;
-- Geef de nth primary key van de tabel en de huidige sessie. IndexNr begint met 1.
FUNCTION GetPrimaryKey( TableName IN VARCHAR2, IndexNr IN NUMBER ) RETURN NUMBER;
-- Onthou naast Primary key ook de datum i.v.m. een eventuele UNDO vanuit AutoCAD.
FUNCTION SavePrimaryKeyAndDate( TableName IN VARCHAR2, PrimaryKey IN NUMBER, Datum IN Date ) RETURN BOOLEAN;
-- Geef verwijderdatum of NULL terug van primary key i.v.m. eventuele UNDO vanuit AutoCAD.
FUNCTION GetDate( TableName IN VARCHAR2, PrimaryKey IN NUMBER ) RETURN DATE;
PRAGMA RESTRICT_REFERENCES (GetPrimaryKey,WNDS, WNPS);
END fac_p_fac_save_restore;
/
CREATE OR REPLACE PACKAGE BODY fac_p_fac_save_restore AS
FUNCTION GetSessionId RETURN VARCHAR2 IS
SessionId VARCHAR2(20);
BEGIN
SELECT USERENV('SESSIONID')
INTO SessionId
FROM DUAL;
RETURN SessionId;
END;
FUNCTION ResetSelectie( TableName IN VARCHAR2 ) RETURN BOOLEAN IS
SessionId VARCHAR2(20);
BEGIN
SessionId := GetSessionId;
DELETE FROM fac_selectie
WHERE fac_selectie_node = SessionId
AND fac_selectie_tabel = TableName;
RETURN TRUE;
EXCEPTION
WHEN OTHERS
THEN RETURN FALSE;
END;
FUNCTION SavePrimaryKey( TableName IN VARCHAR2, PrimaryKey IN NUMBER ) RETURN BOOLEAN IS
SessionId VARCHAR2(20);
BEGIN
SessionId := GetSessionId;
INSERT INTO fac_selectie (fac_selectie_node,
fac_selectie_tabel,
fac_selectie_key)
VALUES (SessionId, TableName, PrimaryKey);
RETURN TRUE;
EXCEPTION
WHEN OTHERS
THEN RETURN FALSE;
END;
-- Geef de nth Fac_Selectie_Key van de geselecteerde records
-- terug. IndexNr begint met 1.
FUNCTION GetPrimaryKey( TableName IN VARCHAR2, IndexNr IN NUMBER ) RETURN NUMBER IS
SessionId VARCHAR2(20);
CURSOR Selectie IS SELECT DISTINCT fac_selectie_key
FROM fac_selectie
WHERE fac_selectie_node = SessionId
AND fac_selectie_tabel = TableName
ORDER BY fac_selectie_key;
SelectieRec Selectie%ROWTYPE;
TmpIndex NUMBER;
ReturnKey NUMBER(10);
BEGIN
SessionId := GetSessionId;
ReturnKey := NULL;
TmpIndex := 1;
FOR SelectieRec IN Selectie
LOOP
IF IndexNr = TmpIndex
THEN
ReturnKey := SelectieRec.fac_selectie_key;
EXIT;
END IF;
TmpIndex := TmpIndex + 1;
END LOOP;
RETURN ReturnKey;
END;
FUNCTION SavePrimaryKeyAndDate( TableName IN VARCHAR2, PrimaryKey IN NUMBER, Datum IN Date ) RETURN BOOLEAN IS
SessionId VARCHAR2(20);
BEGIN
SessionId := GetSessionId;
INSERT INTO fac_selectie (fac_selectie_node,
fac_selectie_tabel,
fac_selectie_key,
fac_selectie_datum)
VALUES (SessionId, TableName, PrimaryKey, Datum);
RETURN TRUE;
EXCEPTION
WHEN OTHERS
THEN RETURN FALSE;
END;
FUNCTION GetDate( TableName IN VARCHAR2, PrimaryKey IN NUMBER ) RETURN DATE IS
SessionId VARCHAR2(20);
ReturnDate Date;
CURSOR Selectie IS SELECT DISTINCT fac_selectie_datum
FROM fac_selectie
WHERE fac_selectie_node = SessionId
AND fac_selectie_key = PrimaryKey
AND fac_selectie_tabel = TableName;
SelectieRec Selectie%ROWTYPE;
TmpIndex NUMBER;
ReturnKey NUMBER(10);
BEGIN
SessionId := GetSessionId;
ReturnDate := NULL;
FOR SelectieRec IN Selectie
LOOP
ReturnDate := SelectieRec.fac_selectie_datum;
EXIT;
END LOOP;
RETURN ReturnDate;
END;
END fac_p_fac_save_restore;
/
#endif // FAC
#ifdef RES
ALTER TABLE res_alg_ruimte DROP CONSTRAINT res_u_alg_ruimte_key;
ALTER TABLE res_alg_ruimte ADD CONSTRAINT res_u_alg_ruimte_key
UNIQUE(res_ruimte_key, alg_ruimte_key,res_alg_ruimte_verwijder);
#endif // RES
#ifdef MLD
ALTER TABLE mld_stdmelding MODIFY (mld_stdmelding_uitvoertijd NUMBER(3));
#endif // MLD