1445 lines
52 KiB
C
1445 lines
52 KiB
C
#ifndef _COMSQL_H
|
|
#define _COMSQL_H
|
|
|
|
/*
|
|
* Opmerkingen:
|
|
* - gebruik ~ waar een \n gewenst is (zie bv. CREATE_TABLE())
|
|
*
|
|
* Functies aanwezig:
|
|
*
|
|
* _FAC_MODULE
|
|
* CHECK_NOG_REFERENCES()
|
|
* CHECK_REFERENCE_DEFAULTUITV()
|
|
* CHECK_REFERENCE_INST()
|
|
* CHECK_REFERENCE_ONROERENDGOED()
|
|
* CHECK_REFERENCE_SRTINST()
|
|
* CHECK_REFERENCE_UITVOERENDE()
|
|
* CHECK_UNIQUE_DEEL_KEY_OMSCHRIJVING
|
|
* CHECK_UNIQUE_KEY_OMSCHRIJVING
|
|
* CHECK_UNIQUE_OMSCHRIJVING
|
|
* CREATE_TABLE()
|
|
* CREATE_TRIGGER()
|
|
* CREATE_VIEW()
|
|
* CREATE_VOLGNR()
|
|
* DEFINIEER_VIEW_AANWEZIG()
|
|
* DEF_DEELSOORT()
|
|
* DEF_DISCIPLINE()
|
|
* DEF_FAC_ENTITY
|
|
* DEF_FAC_FORM()
|
|
* DEF_FAC_MESSAGE
|
|
* DEF_GROEPSOORT()
|
|
* DELETE_CHILDREN
|
|
* FAC_P_FAC_SAVE_RESTORE_UPDATE()
|
|
* LAAT_RUIMTE_VERVALLEN_VOOR_VERDIEPING()
|
|
* LAAT_VERDIEPING_VERVALLEN_VOOR_GEBOUW()
|
|
* NOT_NULL()
|
|
* SET_VERWIJDER_CHILDREN
|
|
* SET_VERWIJDER_CHILDREN2
|
|
* UPDATE_PRIMARY_KEY()
|
|
* UPDATE_UPPER()
|
|
* UPDATE_VOLGNR()
|
|
* UPDATE_WEEKINGAVE
|
|
* BEGIN_MODULE(m)
|
|
* SQL_(SQLRegel)
|
|
* SQL_MODULE(SQLRegel)
|
|
* END_MODULE(m)
|
|
* UPDATE_VERSION(n)
|
|
|
|
*/
|
|
|
|
|
|
/*
|
|
* In principe moeten alle tabellen en views aangemaakt worden met
|
|
* CREATE_TABLE() resp. CREATE_VIEW() om ook het toekennen van geschikte
|
|
* roles af te dwingen (uitzondering is table fac_privilege)
|
|
*
|
|
* (S)elect, (I)nsert, (D)elete, (U)pdate
|
|
*
|
|
* level small full archive
|
|
* ----- ----- ---- -------
|
|
* 1 SIDU SIDU SIDU ; bv. tijdelijke tabellen
|
|
* 2 S SIDU SIDU ; normale tabellen
|
|
* 3 S S SIDU ; bibliotheek tabellen
|
|
* 4 - - - ; tabellen die niet mogen worden ingezien
|
|
*
|
|
* Since 4.60, privileges are not used any more, so these are really dummies.
|
|
*/
|
|
#define BASIS_PRIVILEGE 0
|
|
#define NORMAAL_PRIVILEGE 0
|
|
#define BIBLIOTHEEK_PRIVILEGE 0
|
|
|
|
#define ALG_MODULE_OFFSET 0
|
|
#define ALG_BASIS_PRIVILEGE BASIS_PRIVILEGE
|
|
#define ALG_NORMAAL_PRIVILEGE NORMAAL_PRIVILEGE
|
|
#define ALG_BIBLIOTHEEK_PRIVILEGE BIBLIOTHEEK_PRIVILEGE
|
|
|
|
#define FAC_MODULE_OFFSET ALG_MODULE_OFFSET
|
|
#define FAC_BASIS_PRIVILEGE BASIS_PRIVILEGE
|
|
#define FAC_NORMAAL_PRIVILEGE NORMAAL_PRIVILEGE
|
|
#define FAC_BIBLIOTHEEK_PRIVILEGE BIBLIOTHEEK_PRIVILEGE
|
|
|
|
#define INS_MODULE_OFFSET 10
|
|
#define INS_BASIS_PRIVILEGE BASIS_PRIVILEGE
|
|
#define INS_NORMAAL_PRIVILEGE NORMAAL_PRIVILEGE
|
|
#define INS_BIBLIOTHEEK_PRIVILEGE BIBLIOTHEEK_PRIVILEGE
|
|
|
|
#define PRS_MODULE_OFFSET 20
|
|
#define PRS_BASIS_PRIVILEGE BASIS_PRIVILEGE
|
|
#define PRS_NORMAAL_PRIVILEGE NORMAAL_PRIVILEGE
|
|
#define PRS_BIBLIOTHEEK_PRIVILEGE BIBLIOTHEEK_PRIVILEGE
|
|
|
|
#define MLD_MODULE_OFFSET 30
|
|
#define MLD_BASIS_PRIVILEGE BASIS_PRIVILEGE
|
|
#define MLD_NORMAAL_PRIVILEGE NORMAAL_PRIVILEGE
|
|
#define MLD_BIBLIOTHEEK_PRIVILEGE BIBLIOTHEEK_PRIVILEGE
|
|
|
|
#define RES_MODULE_OFFSET 70
|
|
#define RES_BASIS_PRIVILEGE BASIS_PRIVILEGE
|
|
#define RES_NORMAAL_PRIVILEGE NORMAAL_PRIVILEGE
|
|
#define RES_BIBLIOTHEEK_PRIVILEGE BIBLIOTHEEK_PRIVILEGE
|
|
|
|
#define BEZ_MODULE_OFFSET 80
|
|
#define BEZ_BASIS_PRIVILEGE BASIS_PRIVILEGE
|
|
#define BEZ_NORMAAL_PRIVILEGE NORMAAL_PRIVILEGE
|
|
#define BEZ_BIBLIOTHEEK_PRIVILEGE BIBLIOTHEEK_PRIVILEGE
|
|
|
|
#define WEB_MODULE_OFFSET 90
|
|
#define WEB_BASIS_PRIVILEGE BASIS_PRIVILEGE
|
|
#define WEB_NORMAAL_PRIVILEGE NORMAAL_PRIVILEGE
|
|
#define WEB_BIBLIOTHEEK_PRIVILEGE BIBLIOTHEEK_PRIVILEGE
|
|
|
|
#define CNT_MODULE_OFFSET 100
|
|
#define CNT_BASIS_PRIVILEGE BASIS_PRIVILEGE
|
|
#define CNT_NORMAAL_PRIVILEGE NORMAAL_PRIVILEGE
|
|
#define CNT_BIBLIOTHEEK_PRIVILEGE BIBLIOTHEEK_PRIVILEGE
|
|
|
|
#define BES_MODULE_OFFSET 110
|
|
#define BES_BASIS_PRIVILEGE BASIS_PRIVILEGE
|
|
#define BES_NORMAAL_PRIVILEGE NORMAAL_PRIVILEGE
|
|
#define BES_BIBLIOTHEEK_PRIVILEGE BIBLIOTHEEK_PRIVILEGE
|
|
|
|
#define SCH_MODULE_OFFSET 120
|
|
#define SCH_BASIS_PRIVILEGE BASIS_PRIVILEGE
|
|
#define SCH_NORMAAL_PRIVILEGE NORMAAL_PRIVILEGE
|
|
#define SCH_BIBLIOTHEEK_PRIVILEGE BIBLIOTHEEK_PRIVILEGE
|
|
|
|
// #define MS_SQL
|
|
|
|
#ifdef MS_SQL
|
|
|
|
#define _LEFT_JOIN(table,where) \
|
|
left outer join table on where
|
|
|
|
#define SET_VERWIJDER_CHILDREN(child_table, parent_key, parent_verwijder, \
|
|
child_verwijder, table) \
|
|
BEGIN \
|
|
UPDATE child_table \
|
|
SET child_verwijder = i.parent_verwijder \
|
|
from inserted i left outer join deleted d \
|
|
on i.__T__##table##__KEY=d.__T__##table##__KEY \
|
|
WHERE child_table.parent_key = i.parent_key \
|
|
AND child_verwijder is null \
|
|
and (i.parent_verwijder IS NOT NULL OR \
|
|
(i.parent_verwijder IS NULL AND d.parent_verwijder IS NOT NULL)) \
|
|
; END
|
|
|
|
#define CHECK_REFERENCE_UITVOERENDE(key_veld, message) \
|
|
BEGIN \
|
|
DECLARE @d1 int; \
|
|
DECLARE @d2 int; \
|
|
select @d1=min(c),@d2=max(c) from( \
|
|
select count(*) c \
|
|
from mld_v_uitvoerende \
|
|
WHERE MLD_UITVOERENDE_KEY in(select key_veld from inserted \
|
|
where key_veld IS NOT NULL) \
|
|
group by MLD_UITVOERENDE_KEY) x; \
|
|
if @d1<>1 or @d2<>1 \
|
|
APPLICATION_ERROR(-20000, message); \
|
|
END
|
|
|
|
#define _SPOOL(x)
|
|
|
|
#define BOOLEAN int
|
|
|
|
#define _ORACLE(x)
|
|
#define _ORACLE1(x)
|
|
#define _MSSQL(x) x
|
|
|
|
#define _EQ_OLD(x,y) \
|
|
x in (select y from deleted)
|
|
|
|
#define _FAC_MODULE(module,omschrijving) \
|
|
INSERT INTO fac_module (fac_module_name, fac_module_version, fac_module_date, fac_module_remark, fac_module_extern) \
|
|
VALUES (module,'04.60.9',CONVERT(VARCHAR,GETDATE(),112),omschrijving, 1);
|
|
|
|
#define CREATE_TABLE(table_name, level) \
|
|
CREATE TABLE table_name
|
|
|
|
#define APPLICATION_ERROR(code,text) \
|
|
BEGIN \
|
|
declare @errmsg varchar(256); \
|
|
set @errmsg = text; \
|
|
RAISERROR(@errmsg,16,code); \
|
|
ROLLBACK TRAN \
|
|
END
|
|
|
|
#define APPLICATION_ERROR_GOTO(code,text) \
|
|
BEGIN \
|
|
declare @errmsg varchar(256); \
|
|
set @errmsg = text; \
|
|
RAISERROR(@errmsg,16,code); \
|
|
ROLLBACK TRAN \
|
|
GOTO lerror \
|
|
END
|
|
|
|
|
|
|
|
#define SHOW SELECT
|
|
|
|
#define PROMPT --
|
|
#define PROMPT1(x) -- #x
|
|
#define PROMPT2(x,y) -- #x+","+#y
|
|
|
|
#define _IDENTITY(x,y) \
|
|
IDENTITY(x,y)
|
|
|
|
#define _TYPE(tab,fld) \
|
|
__T__##tab##__##fld##__TYPE
|
|
|
|
#define NUMBER \
|
|
DECIMAL
|
|
|
|
#define MONEY \
|
|
MONEY
|
|
|
|
#define DATE \
|
|
DATETIME
|
|
|
|
#define SYSDATE \
|
|
GETDATE()
|
|
|
|
#define NVL(c,v) \
|
|
ISNULL(c,v)
|
|
|
|
#define VARCHAR2 \
|
|
VARCHAR
|
|
|
|
#define NVARCHAR2 \
|
|
NVARCHAR
|
|
|
|
#define LPAD \
|
|
WEB.LPAD
|
|
|
|
#define RPAD \
|
|
WEB.RPAD
|
|
|
|
#define TRUNC_DATE(x) \
|
|
web.TRUNC_DATE(x, 'DDD')
|
|
|
|
#define INITCAP(x) \
|
|
web.INITCAP(x)
|
|
|
|
#define INSTR2(a, b) \
|
|
CHARINDEX(b, a)
|
|
|
|
#define INSTR(a, b, c) \
|
|
CHARINDEX(b, a, c)
|
|
|
|
#define LONG \
|
|
TEXT
|
|
|
|
#define _LONG_RAW \
|
|
IMAGE
|
|
|
|
#define _INTO_VAR(x)
|
|
|
|
#define _CONCAT \
|
|
+
|
|
|
|
#define CHR(x) \
|
|
CHAR(x)
|
|
|
|
#define LENGTH \
|
|
LEN
|
|
|
|
#define SUBSTR(a,b,c) \
|
|
SUBSTRING(a,b,c)
|
|
|
|
#define SUBSTR2(a,b) \
|
|
SUBSTRING(a,b,8000)
|
|
|
|
#define _ALTER_MODIFY_START \
|
|
ALTER COLUMN
|
|
|
|
#define _ALTER_ADD_START \
|
|
ADD
|
|
|
|
#define _ALTER_END \
|
|
|
|
#define CREATE_SEQUENCE(sequence_name, minval)
|
|
|
|
#define CREATE_VIEW(view_name, level) \
|
|
IF EXISTS (SELECT TABLE_NAME \
|
|
FROM INFORMATION_SCHEMA.VIEWS \
|
|
WHERE TABLE_NAME = #@view_name~ \
|
|
AND TABLE_SCHEMA = 'dbo')~ \
|
|
DROP VIEW dbo.view_name;~ \
|
|
GO~CREATE VIEW dbo.view_name
|
|
|
|
#define CREATE_TRIGGER(trigger_name) \
|
|
IF EXISTS (SELECT name FROM sysobjects \
|
|
WHERE name = #@trigger_name \
|
|
AND type = 'TR')~ \
|
|
DROP TRIGGER trigger_name;~GO~CREATE TRIGGER trigger_name
|
|
|
|
#define _END_TRIGGER() \
|
|
END;~GO
|
|
|
|
#define CREATE_PROCEDURE(pack_name, proc_name) \
|
|
IF EXISTS (SELECT name \
|
|
FROM sysobjects \
|
|
WHERE name = N'proc_name' \
|
|
AND type = 'P') \
|
|
DROP PROCEDURE proc_name
|
|
|
|
|
|
#define _CREATE_OR_REPLACE \
|
|
CREATE
|
|
|
|
#define _RETURN_LENGTH(x) \
|
|
(x)
|
|
|
|
#define _DECLARE_VAR(x) \
|
|
DECLARE @x
|
|
|
|
#define _SET_VAR(x) \
|
|
SET @x
|
|
|
|
#define _VAR(x) \
|
|
@x
|
|
|
|
#define _ASSIGN \
|
|
=
|
|
|
|
#define _RETURNS \
|
|
RETURNS
|
|
|
|
#define _AS \
|
|
AS
|
|
|
|
#define _GO \
|
|
~GO
|
|
|
|
#define _GO2 \
|
|
~GO
|
|
|
|
#define TRUE \
|
|
1
|
|
|
|
#define FALSE \
|
|
0
|
|
|
|
#define _NOTFOUND(x) \
|
|
@@FETCH_STATUS = -1
|
|
|
|
#define EXCEPTION
|
|
|
|
#define WHEN \
|
|
end if
|
|
|
|
#define NO_DATA_FOUND \
|
|
@@rowcount<1
|
|
|
|
#define TOO_MANY_ROWS \
|
|
@@rowcount>1
|
|
|
|
#define OTHERS \
|
|
1=2
|
|
|
|
#define _FOR(i,a,b) \
|
|
set i=(a)-1; while i<(b) begin set i=i+1;
|
|
|
|
#define _LOOP \
|
|
while 1=1 begin
|
|
|
|
#define _END_LOOP \
|
|
end
|
|
|
|
#define _EXIT \
|
|
break
|
|
|
|
#define _FROM_DUAL
|
|
|
|
#define _EXEC0(p) \
|
|
exec p
|
|
|
|
#define _EXEC1(p,a1) \
|
|
exec p a1
|
|
|
|
#define _EXEC2(p,a1,a2) \
|
|
exec p a1,a2
|
|
|
|
#define _EXEC3(p,a1,a2,a3) \
|
|
exec p a1,a2,a3
|
|
|
|
#define _EXEC4(p,a1,a2,a3, a4) \
|
|
exec p a1,a2,a3,a4
|
|
|
|
#define _EXEC5(p,a1,a2,a3,a4,a5) \
|
|
exec p a1,a2,a3,a4,a5
|
|
|
|
#define _EXEC6(p,a1,a2,a3,a4,a5,a6) \
|
|
exec p a1,a2,a3,a4,a5,a6
|
|
|
|
#define _INTO1(x) \
|
|
x=
|
|
#define _INTO2(x)
|
|
#define _INTO3(x)
|
|
|
|
#define _DUMMY1_FROM \
|
|
declare @cnt decimal;~select @cnt=count(*) from
|
|
#define _DUMMY1_WHEN1 \
|
|
if @cnt = 1 begin
|
|
#define _DUMMY1_WHEN0 \
|
|
if @cnt = 0 begin
|
|
#define _DUMMY1_WHEN2 \
|
|
if @cnt > 0 begin
|
|
#define _DUMMY1_END1 \
|
|
end;
|
|
#define _DUMMY1_END2
|
|
|
|
#define SUBSTRB SUBSTR
|
|
|
|
#define _U_NEW
|
|
#define _U_OLD
|
|
|
|
#define _U_UPDATE(table,field,new) \
|
|
update table set field = new \
|
|
where __T__##table##__KEY in(select __T__##table##__KEY from inserted)
|
|
|
|
#define UPDATE_UPPER(omschrijving,upper_omschrijving,table) \
|
|
update table \
|
|
set upper_omschrijving = UPPER(omschrijving) \
|
|
where __T__##table##__KEY in(select __T__##table##__KEY from inserted)
|
|
|
|
#define _BEFORE_INSERT_OR_UPDATE(TableName) \
|
|
on TableName after insert, update as
|
|
|
|
#define _AFTER_UPDATE(TableName) \
|
|
on TableName after update as
|
|
|
|
#define _BEFORE_UPDATE(TableName) \
|
|
on TableName after update as
|
|
|
|
#define _BEFORE_INSERT_OR_UPDATE_OR_DELETE(TableName) \
|
|
on TableName after insert, update, delete as
|
|
|
|
#define _AFTER_INSERT_OR_UPDATE_OR_DELETE(TableName) \
|
|
on TableName after insert, update, delete as
|
|
|
|
#define _AFTER_INSERT_OR_UPDATE(TableName) \
|
|
on TableName after insert, update as
|
|
|
|
#define _BEFORE_DELETE(TableName) \
|
|
on TableName after delete as
|
|
|
|
#define UPDATE_AANMAAKDATUM(TableName, Datum_veld) \
|
|
update TableName set Datum_veld = GetDATE() \
|
|
where __T__##TableName##__KEY in(select __T__##TableName##__KEY from inserted)
|
|
|
|
#define _OR_REPLACE
|
|
|
|
#define _FOR_EACH_ROW
|
|
|
|
#define _CC \
|
|
+
|
|
|
|
#define _OPLUS
|
|
|
|
#define _OSTAR \
|
|
*
|
|
|
|
#define _DECODE_BEGIN \
|
|
CASE
|
|
|
|
#define _DECODE_WHEN \
|
|
when
|
|
|
|
#define _DECODE_THEN \
|
|
THEN
|
|
|
|
#define _DECODE_ELSE \
|
|
ELSE
|
|
|
|
#define _DECODE_END \
|
|
END
|
|
|
|
#define _SET_SQLS(x) \
|
|
SET x~GO
|
|
#define _SET_ORACLE(x)
|
|
|
|
#define _THEN \
|
|
begin
|
|
|
|
#define _ELSE \
|
|
end else begin
|
|
|
|
#define _ELSIF \
|
|
end else if
|
|
|
|
#define _END_IF \
|
|
end;
|
|
|
|
#define _FOUND(x) \
|
|
@@FETCH_STATUS = 0
|
|
|
|
#define _IN_PACKAGE(pak,fp,fname) \
|
|
GO~CREATE fp pak.fname
|
|
|
|
#define _INPUT \
|
|
|
|
#define _OUTPUT(x) \
|
|
x OUTPUT
|
|
|
|
#define _DATEPART(x,y) \
|
|
CONVERT(char,DATEPART(y,x))
|
|
|
|
#define DATE_TO_CHAR \
|
|
web.DATE_TO_CHAR
|
|
|
|
#define NUMBER_TO_CHAR \
|
|
web.NUMBER_TO_CHAR
|
|
|
|
#define _MOD \
|
|
%
|
|
|
|
#define _NUM2HM(x) \
|
|
DatePart(hh,x) + DatePart(mi,x)/60
|
|
|
|
#define TO_CHAR(x) \
|
|
RTRIM(CONVERT(char,x))
|
|
|
|
#define TO_NUMBER(x) \
|
|
CONVERT(decimal,x)
|
|
|
|
#define TO_DATE(x) \
|
|
CONVERT(DATETIME,x)
|
|
|
|
#define _TO_NUMBER2(x,y) \
|
|
web.CHAR_TO_NUMBER(x,y)
|
|
|
|
#define _TO_DATE2(x,y) \
|
|
web.CHAR_TO_DATE(x,y)
|
|
|
|
#define _DECLARE_CURSOR(x) \
|
|
DECLARE x
|
|
|
|
#define _CURSOR_PARAM(x)
|
|
#define _CURSOR_PARAM2(x,y)
|
|
#define _CURSOR_PARAM3(x,y,z)
|
|
|
|
#define _CURSOR_FOR \
|
|
CURSOR LOCAL FOR
|
|
|
|
#define _OPEN_CURSOR1(query, s, rec) \
|
|
OPEN query; \
|
|
~ FETCH NEXT FROM query INTO s; \
|
|
~ WHILE (@@FETCH_STATUS <> -1 ) \
|
|
~ BEGIN
|
|
|
|
#define _OPEN_CURSOR2(query, s, rec, key) \
|
|
OPEN query; \
|
|
~ FETCH NEXT FROM query INTO s; \
|
|
~ WHILE (@@FETCH_STATUS <> -1 ) \
|
|
~ BEGIN
|
|
|
|
#define _CLOSE_CURSOR(query, s) \
|
|
FETCH NEXT FROM query INTO s; \
|
|
~ END; \
|
|
~ CLOSE query; \
|
|
~ DEALLOCATE query;
|
|
|
|
#define _BEGIN_SQLS_PROC \
|
|
AS BEGIN
|
|
|
|
#define _BEGIN_ORA_PROC \
|
|
|
|
#define _END_PROC \
|
|
END~GO
|
|
|
|
#define UPDATE_PRIMARY_KEY(primary_key, sequence_primary_key) \
|
|
|
|
#define CHECK_UNIQUE_OMSCHRIJVING(tabel, upper_omschrijving, \
|
|
exc_msg_GEEN_OMSCHRIJVING, \
|
|
exc_msg_BESTAANDE_OMSCHRIJVING) \
|
|
IF EXISTS (SELECT 'X' \
|
|
FROM tabel \
|
|
GROUP BY upper_omschrijving \
|
|
HAVING COUNT(*) > 1) \
|
|
APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING);
|
|
|
|
#define CHECK_UNIQUE_KEY_OMSCHRIJVING(tabel, key, upper_omschrijving, \
|
|
exc_msg_GEEN_OMSCHRIJVING, \
|
|
exc_msg_BESTAANDE_OMSCHRIJVING) \
|
|
IF EXISTS (SELECT 'X' \
|
|
FROM tabel \
|
|
GROUP BY key, upper_omschrijving \
|
|
HAVING COUNT(*) > 1) \
|
|
APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING);
|
|
|
|
#define CHECK_UNIQUE_DEEL_KEY_OMSCHRIJVING(tabel, up_key, naast_key, \
|
|
upper_omschrijving, exc_msg_GEEN_OMSCHRIJVING, \
|
|
exc_msg_BESTAANDE_OMSCHRIJVING) \
|
|
IF EXISTS (SELECT 'X' \
|
|
FROM tabel \
|
|
GROUP BY up_key, naast_key, upper_omschrijving \
|
|
HAVING COUNT(*) > 1) \
|
|
APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING);
|
|
|
|
#define LAAT_VERDIEPING_VERVALLEN_VOOR_GEBOUW(exc_msg_VERDIEPING_IN_GEBRUIK) \
|
|
UPDATE alg_verdieping \
|
|
set alg_verdieping.alg_verdieping_verwijder = i.alg_gebouw_verwijder \
|
|
from inserted i \
|
|
where i.alg_gebouw_verwijder IS NOT NULL \
|
|
and alg_verdieping.alg_gebouw_key=i.alg_gebouw_key
|
|
|
|
#define LAAT_RUIMTE_VERVALLEN_VOOR_VERDIEPING(exc_msg_RUIMTE_IN_GEBRUIK) \
|
|
UPDATE alg_ruimte \
|
|
set alg_ruimte.alg_ruimte_verwijder = i.alg_verdieping_verwijder \
|
|
from inserted i \
|
|
where i.alg_verdieping_verwijder IS NOT NULL \
|
|
and alg_ruimte.alg_verdieping_key = i.alg_verdieping_key
|
|
|
|
#define CHECK_NOG_REFERENCES(tabel,tabel_verwijder_veld,reference_view, \
|
|
key_veld,message) \
|
|
if (select count(*) \
|
|
from inserted i,deleted d,reference_view \
|
|
where i.key_veld = d.key_veld \
|
|
and i.tabel_verwijder_veld IS NOT NULLDATUM \
|
|
and reference_view.key_veld = d.key_veld)>0 \
|
|
APPLICATION_ERROR_GOTO(-20000,message)
|
|
|
|
#define CHECK_REFERENCE_INST(key_veld, message) \
|
|
IF NOT EXISTS (SELECT 'X' \
|
|
FROM ins_v_aanwezigdeel \
|
|
WHERE ins_deel_key = :new.key_veld) \
|
|
IF NOT EXISTS (SELECT 'X' \
|
|
FROM ins_v_aanwezigonderdeel \
|
|
WHERE ins_onderdeel_key = :new.key_veld) \
|
|
IF NOT EXISTS (SELECT 'X' \
|
|
FROM ins_v_aanwezigelement \
|
|
WHERE ins_element_key = :new.key_veld) \
|
|
APPLICATION_ERROR(-20000, message);
|
|
|
|
#define CHECK_REFERENCE_SRTINST(key_veld, message) \
|
|
IF NOT EXISTS (SELECT 'X' \
|
|
FROM ins_v_aanwezigsrtdeel \
|
|
WHERE ins_srtdeel_key = :new.key_veld) \
|
|
IF NOT EXISTS (SELECT 'X' \
|
|
FROM ins_v_aanwezigsrtonderdeel \
|
|
WHERE ins_srtonderdeel_key = :new.key_veld) \
|
|
IF NOT EXISTS (SELECT 'X' \
|
|
FROM ins_v_aanwezigsrtelement \
|
|
WHERE ins_srtelement_key = :new.key_veld) \
|
|
APPLICATION_ERROR(-20000, message);
|
|
|
|
#define CHECK_REFERENCE_ONROERENDGOED(key_veld, message) \
|
|
IF NOT EXISTS (SELECT 'X' \
|
|
FROM alg_v_aanwezigruimte \
|
|
WHERE alg_ruimte_key = :new.key_veld) \
|
|
IF NOT EXISTS (SELECT 'X' \
|
|
FROM alg_v_aanwezigverdieping \
|
|
WHERE alg_verdieping_key = :new.key_veld) \
|
|
IF NOT EXISTS (SELECT 'X' \
|
|
FROM alg_v_aanweziggebouw \
|
|
WHERE alg_gebouw_key = :new.key_veld) \
|
|
IF NOT EXISTS (SELECT 'X' \
|
|
FROM alg_v_aanwezigterreinsector \
|
|
WHERE alg_terreinsector_key = :new.key_veld) \
|
|
APPLICATION_ERROR_GOTO(-20000,message); \
|
|
|
|
|
|
#define USER_TABLES INFORMATION_SCHEMA.TABLES \
|
|
WHERE TABLE_CATALOG = 'FAC' AND TABLE_TYPE = 'BASE TABLE' \
|
|
AND TABLE_CATALOG = USER
|
|
|
|
#define USER_VIEWS INFORMATION_SCHEMA.VIEWS \
|
|
WHERE TABLE_CATALOG = 'FAC' AND TABLE_CATALOG = USER
|
|
|
|
#define USER_INDEXES sysindexes i, INFORMATION_SCHEMA.TABLES t \
|
|
WHERE i.id = object_id(t.table_name) AND \
|
|
table_catalog = 'FAC' AND table_type = 'BASE TABLE'
|
|
|
|
#define USER_TRIGGERS sysobjects where type = 'TR'
|
|
|
|
#define USER_CONSTRAINTS sysobjects where type in ('C','F','K')
|
|
|
|
#define USER_SEQUENCES \
|
|
(SELECT DISTINCT name FROM syscolumns where status > 127) X
|
|
|
|
#define CEIL \
|
|
CEILING
|
|
|
|
#else // MS_SQL :-> ORACLE
|
|
|
|
#define _LEFT_JOIN(table,where) \
|
|
, table
|
|
|
|
#define SET_VERWIJDER_CHILDREN(child_table, parent_key, parent_verwijder, \
|
|
child_verwijder, table) \
|
|
BEGIN \
|
|
IF :new.parent_verwijder IS NOT NULL OR \
|
|
(:new.parent_verwijder IS NULL AND :old.parent_verwijder IS NOT NULL) \
|
|
THEN \
|
|
UPDATE child_table \
|
|
SET child_verwijder = :new.parent_verwijder \
|
|
WHERE \
|
|
child_table.parent_key = :new.parent_key \
|
|
AND child_verwijder is null; \
|
|
END IF; \
|
|
END
|
|
|
|
#define CHECK_REFERENCE_UITVOERENDE(key_veld, message) \
|
|
DECLARE \
|
|
dummy CHAR; \
|
|
BEGIN \
|
|
IF :new.key_veld IS NOT NULL \
|
|
THEN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM mld_v_uitvoerende \
|
|
WHERE MLD_UITVOERENDE_KEY = :new.key_veld; \
|
|
END IF; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
APPLICATION_ERROR(-20000, message); \
|
|
END
|
|
|
|
#define CREATE_TABLE(table_name, level) \
|
|
CREATE TABLE table_name
|
|
|
|
#define _SPOOL(x) \
|
|
SPOOL x
|
|
|
|
#define _ORACLE(x) x
|
|
#define _ORACLE1(x) x,
|
|
#define _MSSQL(x)
|
|
|
|
#define _EQ_OLD(x,y) \
|
|
x = :old.y
|
|
|
|
#define PROMPT1(x) \
|
|
PROMPT x
|
|
#define PROMPT2(x,y) \
|
|
PROMPT x,y
|
|
|
|
#define _SET_SQLS(x)
|
|
#define _SET_ORACLE(x) \
|
|
SET x
|
|
|
|
#define _INTO_VAR(x) \
|
|
INTO x
|
|
|
|
#define CREATE_SEQUENCE(sequence_name, minval) \
|
|
CREATE SEQUENCE sequence_name MINVALUE minval;
|
|
|
|
#define CREATE_VIEW(view_name, level) \
|
|
CREATE OR REPLACE FORCE VIEW view_name
|
|
|
|
#define CREATE_TRIGGER(trigger_name) \
|
|
CREATE OR REPLACE TRIGGER trigger_name
|
|
|
|
#define _END_TRIGGER() \
|
|
END;~/
|
|
|
|
#define CREATE_PROCEDURE(pack_name, proc_name) \
|
|
CREATE OR REPLACE PROCEDURE proc_name
|
|
|
|
#define MONEY \
|
|
NUMBER
|
|
|
|
#define VARCHAR \
|
|
VARCHAR2
|
|
|
|
#define _LONG_RAW \
|
|
LONG RAW
|
|
|
|
#define _CONCAT \
|
|
||
|
|
|
|
#define _ALTER_MODIFY_START \
|
|
MODIFY
|
|
|
|
#define _ALTER_ADD_START \
|
|
ADD (
|
|
|
|
#define _ALTER_END \
|
|
)
|
|
|
|
#define _IDENTITY(x,y)
|
|
|
|
#define _TYPE(tab,fld) \
|
|
tab.fld%TYPE
|
|
|
|
#define _CREATE_OR_REPLACE \
|
|
CREATE OR REPLACE
|
|
|
|
#define _RETURN_LENGTH(x) \
|
|
|
|
#define _DECLARE_VAR(x) \
|
|
x
|
|
|
|
#define _SET_VAR(x) \
|
|
x
|
|
|
|
#define _VAR(x) \
|
|
x
|
|
|
|
#define _ASSIGN \
|
|
:=
|
|
|
|
#define _RETURNS \
|
|
RETURN
|
|
|
|
#define _AS \
|
|
IS
|
|
|
|
#define _GO \
|
|
;
|
|
|
|
#define _GO2 \
|
|
;~/
|
|
|
|
#define _NOTFOUND(x) \
|
|
x%NOTFOUND
|
|
|
|
#define INSTR2(a, b) \
|
|
INSTR(a, b)
|
|
|
|
#define SUBSTR2 \
|
|
SUBSTR
|
|
|
|
#define TRUNC_DATE \
|
|
TRUNC
|
|
|
|
#define _LOOP \
|
|
loop
|
|
|
|
#define _FOR(i,a,b) \
|
|
FOR i in a .. b loop
|
|
|
|
#define _END_LOOP \
|
|
end loop
|
|
|
|
#define _EXIT \
|
|
exit
|
|
|
|
#define _FROM_DUAL \
|
|
FROM DUAL
|
|
|
|
#define _EXEC0(p) \
|
|
p
|
|
|
|
#define _EXEC1(p,a1) \
|
|
p(a1)
|
|
|
|
#define _EXEC2(p,a1,a2) \
|
|
p(a1,a2)
|
|
|
|
#define _EXEC3(p,a1,a2,a3) \
|
|
p(a1,a2,a3)
|
|
|
|
#define _EXEC4(p,a1,a2,a3, a4) \
|
|
p(a1,a2,a3,a4)
|
|
|
|
#define _EXEC5(p,a1,a2,a3,a4,a5) \
|
|
p(a1,a2,a3,a4,a5)
|
|
|
|
#define _EXEC6(p,a1,a2,a3,a4,a5,a6) \
|
|
p(a1,a2,a3,a4,a5,a6)
|
|
|
|
|
|
#define _INTO1(x)
|
|
#define _INTO2(x) \
|
|
INTO x
|
|
#define _INTO3(x) \
|
|
,x
|
|
|
|
#define _DUMMY1_FROM \
|
|
DECLARE dummy CHAR;~BEGIN~SELECT 'X' INTO dummy FROM
|
|
#define _DUMMY1_WHEN1
|
|
#define _DUMMY1_WHEN0 \
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN
|
|
#define _DUMMY1_WHEN2 \
|
|
WHEN TOO_MANY_ROWS THEN
|
|
#define _DUMMY1_END1
|
|
#define _DUMMY1_END2 \
|
|
end;
|
|
|
|
#define _U_NEW \
|
|
:new.
|
|
#define _U_OLD \
|
|
:old.
|
|
|
|
#define _U_UPDATE(table,field,new) \
|
|
field := new;
|
|
|
|
#define UPDATE_UPPER(omschrijving, upper_omschrijving,tab) \
|
|
:new.upper_omschrijving := UPPER(:new.omschrijving)
|
|
|
|
#define _BEFORE_INSERT_OR_UPDATE(TableName) \
|
|
BEFORE INSERT OR UPDATE ON TableName
|
|
|
|
#define _AFTER_UPDATE(TableName) \
|
|
AFTER UPDATE ON TableName
|
|
|
|
#define _BEFORE_UPDATE(TableName) \
|
|
BEFORE UPDATE ON TableName
|
|
|
|
#define _BEFORE_INSERT_OR_UPDATE_OR_DELETE(TableName) \
|
|
BEFORE INSERT OR UPDATE OR DELETE ON TableName
|
|
|
|
#define _AFTER_INSERT_OR_UPDATE_OR_DELETE(TableName) \
|
|
AFTER INSERT OR UPDATE OR DELETE ON TableName
|
|
|
|
#define _AFTER_INSERT_OR_UPDATE(TableName) \
|
|
AFTER INSERT OR UPDATE ON TableName
|
|
|
|
#define _BEFORE_DELETE(TableName) \
|
|
BEFORE DELETE ON TableName
|
|
|
|
#define UPDATE_AANMAAKDATUM(TableName, Datum_veld) \
|
|
BEGIN \
|
|
IF :new.Datum_veld IS NULL \
|
|
THEN \
|
|
:new.Datum_veld := SYSDATE; \
|
|
END IF; \
|
|
END
|
|
|
|
#define _OR_REPLACE \
|
|
OR REPLACE
|
|
|
|
#define _FOR_EACH_ROW \
|
|
FOR EACH ROW
|
|
|
|
#define _CC \
|
|
||
|
|
|
|
#define _OPLUS \
|
|
(+)
|
|
|
|
#define _OSTAR
|
|
|
|
#define _DECODE_BEGIN \
|
|
DECODE(
|
|
|
|
#define _DECODE_WHEN \
|
|
,
|
|
|
|
#define _DECODE_THEN \
|
|
,
|
|
|
|
#define _DECODE_ELSE \
|
|
,
|
|
|
|
#define _DECODE_END \
|
|
)
|
|
|
|
#define _THEN \
|
|
THEN
|
|
|
|
#define _FOUND(x) \
|
|
x%FOUND = TRUE
|
|
|
|
#define _IN_PACKAGE(pak,fp,fname) \
|
|
fp fname
|
|
|
|
#define _INPUT \
|
|
IN
|
|
|
|
#define _OUTPUT(x) \
|
|
OUT x
|
|
|
|
#define _DATEPART(x,y) \
|
|
TO_CHAR(x,#@y)
|
|
|
|
#define DATE_TO_CHAR \
|
|
TO_CHAR
|
|
|
|
#define NUMBER_TO_CHAR \
|
|
TO_CHAR
|
|
|
|
#define _MOD \
|
|
MOD
|
|
|
|
#define _NUM2HM(x) \
|
|
TO_NUMBER(TO_CHAR(x,'HH24.MI'))
|
|
|
|
#define _TO_CHAR(x) \
|
|
TO_CHAR(x)
|
|
|
|
#define _TO_NUMBER(x) \
|
|
TO_NUMBER(x)
|
|
|
|
#define _TO_NUMBER2(x,y) \
|
|
TO_NUMBER(x,y)
|
|
|
|
#define _TO_DATE(x) \
|
|
TO_DATE(x)
|
|
|
|
#define _TO_DATE2(x,y) \
|
|
TO_DATE(x,y)
|
|
|
|
#define _DECLARE_CURSOR(x) \
|
|
CURSOR x
|
|
|
|
#define _CURSOR_PARAM(x) \
|
|
(x)
|
|
|
|
#define _CURSOR_PARAM2(x,y) \
|
|
(x,y)
|
|
|
|
#define _CURSOR_PARAM3(x,y,z) \
|
|
(x,y,z)
|
|
|
|
#define _CURSOR_FOR \
|
|
IS
|
|
|
|
#define _OPEN_CURSOR1(query, s, rec) \
|
|
FOR rec IN query LOOP
|
|
|
|
#define _OPEN_CURSOR2(query, s, rec, key) \
|
|
FOR rec IN query(key) LOOP
|
|
// , val s := rec.val;
|
|
|
|
#define _CLOSE_CURSOR(query, s) \
|
|
END LOOP;
|
|
|
|
|
|
#define _BEGIN_SQLS_PROC \
|
|
AS
|
|
|
|
#define _BEGIN_ORA_PROC \
|
|
BEGIN
|
|
|
|
#define _END_PROC \
|
|
END;~/
|
|
|
|
#define _END_IF \
|
|
END IF;
|
|
|
|
#define _ELSE \
|
|
ELSE
|
|
|
|
#define _ELSIF \
|
|
ELSIF
|
|
|
|
#define _FAC_MODULE(module,omschrijving) \
|
|
INSERT INTO fac_module (fac_module_name, fac_module_version, fac_module_date, fac_module_remark, fac_module_extern) \
|
|
VALUES (module,'04.60.9',TO_CHAR(SYSDATE,'YYYYMMDD'),omschrijving, 1);
|
|
|
|
#define APPLICATION_ERROR(code,text) raise_application_error(code, text)
|
|
|
|
#define APPLICATION_ERROR_GOTO(code,text) raise_application_error(code, text)
|
|
|
|
#define UPDATE_PRIMARY_KEY(primary_key, sequence_primary_key) \
|
|
IF :new.primary_key IS NULL \
|
|
THEN SELECT sequence_primary_key.nextval INTO :new.primary_key \
|
|
FROM DUAL; \
|
|
END IF
|
|
|
|
#define CHECK_UNIQUE_OMSCHRIJVING(tabel, upper_omschrijving, \
|
|
exc_msg_GEEN_OMSCHRIJVING, \
|
|
exc_msg_BESTAANDE_OMSCHRIJVING) \
|
|
DECLARE \
|
|
dummy CHAR := 'N'; \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM tabel \
|
|
GROUP BY upper_omschrijving \
|
|
HAVING COUNT(*) > 1; \
|
|
APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING); \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND \
|
|
THEN NULL; \
|
|
\
|
|
WHEN TOO_MANY_ROWS \
|
|
THEN APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING); \
|
|
END
|
|
|
|
#define CHECK_UNIQUE_KEY_OMSCHRIJVING(tabel, key, upper_omschrijving, \
|
|
exc_msg_GEEN_OMSCHRIJVING, \
|
|
exc_msg_BESTAANDE_OMSCHRIJVING) \
|
|
DECLARE \
|
|
dummy CHAR := 'N'; \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM tabel \
|
|
GROUP BY key, upper_omschrijving \
|
|
HAVING COUNT(*) > 1; \
|
|
APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING); \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND \
|
|
THEN NULL; \
|
|
\
|
|
WHEN TOO_MANY_ROWS \
|
|
THEN APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING); \
|
|
END
|
|
|
|
#define CHECK_UNIQUE_DEEL_KEY_OMSCHRIJVING(tabel, up_key, naast_key, \
|
|
upper_omschrijving, exc_msg_GEEN_OMSCHRIJVING, \
|
|
exc_msg_BESTAANDE_OMSCHRIJVING) \
|
|
DECLARE \
|
|
dummy CHAR := 'N'; \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM tabel \
|
|
GROUP BY up_key, naast_key, upper_omschrijving \
|
|
HAVING COUNT(*) > 1; \
|
|
APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING); \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND \
|
|
THEN NULL; \
|
|
\
|
|
WHEN TOO_MANY_ROWS \
|
|
THEN APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING); \
|
|
END
|
|
|
|
#define LAAT_VERDIEPING_VERVALLEN_VOOR_GEBOUW(exc_msg_VERDIEPING_IN_GEBRUIK) \
|
|
BEGIN \
|
|
IF :new.alg_gebouw_verwijder IS NOT NULL \
|
|
AND :old.alg_gebouw_verwijder IS NULL \
|
|
THEN \
|
|
UPDATE alg_verdieping \
|
|
SET alg_verdieping_verwijder = :new.alg_gebouw_verwijder \
|
|
WHERE \
|
|
alg_verdieping.alg_gebouw_key = :new.alg_gebouw_key; \
|
|
END IF; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND \
|
|
THEN APPLICATION_ERROR(-20000, exc_msg_VERDIEPING_IN_GEBRUIK); \
|
|
\
|
|
WHEN TOO_MANY_ROWS \
|
|
THEN APPLICATION_ERROR(-20000, exc_msg_VERDIEPING_IN_GEBRUIK); \
|
|
END
|
|
|
|
#define LAAT_RUIMTE_VERVALLEN_VOOR_VERDIEPING(exc_msg_RUIMTE_IN_GEBRUIK) \
|
|
BEGIN \
|
|
IF :new.alg_verdieping_verwijder IS NOT NULL \
|
|
AND :old.alg_verdieping_verwijder IS NULL \
|
|
THEN \
|
|
UPDATE alg_ruimte \
|
|
SET alg_ruimte_verwijder = :new.alg_verdieping_verwijder \
|
|
WHERE \
|
|
alg_ruimte.alg_verdieping_key = :new.alg_verdieping_key; \
|
|
END IF; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND \
|
|
THEN APPLICATION_ERROR(-20000, exc_msg_RUIMTE_IN_GEBRUIK); \
|
|
\
|
|
WHEN TOO_MANY_ROWS \
|
|
THEN APPLICATION_ERROR(-20000, exc_msg_RUIMTE_IN_GEBRUIK); \
|
|
END
|
|
|
|
#define CHECK_NOG_REFERENCES(tabel,tabel_verwijder_veld,reference_view, \
|
|
key_veld,message) \
|
|
DECLARE \
|
|
dummy CHAR; \
|
|
BEGIN \
|
|
IF :new.tabel_verwijder_veld IS NOT NULLDATUM \
|
|
AND :old.tabel_verwijder_veld IS NULLDATUM \
|
|
THEN \
|
|
SELECT 'x' INTO dummy \
|
|
FROM reference_view \
|
|
WHERE reference_view.key_veld = :old.key_veld; \
|
|
APPLICATION_ERROR(-20000,message); \
|
|
END IF; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
NULL; \
|
|
WHEN TOO_MANY_ROWS THEN \
|
|
APPLICATION_ERROR(-20000,message); \
|
|
END
|
|
|
|
#define CHECK_REFERENCE_INST(key_veld, message) \
|
|
DECLARE \
|
|
dummy CHAR; \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM ins_v_aanwezigdeel \
|
|
WHERE ins_deel_key = :new.key_veld; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM ins_v_aanwezigonderdeel \
|
|
WHERE ins_onderdeel_key = :new.key_veld; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM ins_v_aanwezigelement \
|
|
WHERE ins_element_key = :new.key_veld; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
APPLICATION_ERROR(-20000, message); \
|
|
END; \
|
|
END; \
|
|
END
|
|
|
|
#define CHECK_REFERENCE_SRTINST(key_veld, message) \
|
|
DECLARE \
|
|
dummy CHAR; \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM ins_v_aanwezigsrtdeel \
|
|
WHERE ins_srtdeel_key = :new.key_veld; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM ins_v_aanwezigsrtonderdeel \
|
|
WHERE ins_srtonderdeel_key = :new.key_veld; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM ins_v_aanwezigsrtelement \
|
|
WHERE ins_srtelement_key = :new.key_veld; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
APPLICATION_ERROR(-20000, message); \
|
|
END; \
|
|
END; \
|
|
END
|
|
|
|
#define CHECK_REFERENCE_ONROERENDGOED(key_veld, message) \
|
|
DECLARE \
|
|
dummy CHAR; \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM alg_v_aanwezigruimte \
|
|
WHERE alg_ruimte_key = :new.key_veld; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM alg_v_aanwezigverdieping \
|
|
WHERE alg_verdieping_key = :new.key_veld; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM alg_v_aanweziggebouw \
|
|
WHERE alg_gebouw_key = :new.key_veld; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM alg_v_aanwezigterreinsector \
|
|
WHERE alg_terreinsector_key = :new.key_veld; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
APPLICATION_ERROR(-20000,message); \
|
|
END; \
|
|
END; \
|
|
END; \
|
|
END
|
|
|
|
#define CEIL \
|
|
CEIL
|
|
|
|
#endif // MS_SQL / ORACLE
|
|
|
|
|
|
#define NULLDATUM NULL
|
|
|
|
#define CREATE_VOLGNR(volgnr_srt, volgnr_periode) \
|
|
INSERT INTO fac_volgnrs (fac_volgnr_srt, fac_volgnr_periode) \
|
|
VALUES(volgnr_srt, volgnr_periode)
|
|
|
|
|
|
#define UPDATE_VOLGNR(key_veld, fac_volgnr_srt) \
|
|
IF :new.key_veld IS NULL \
|
|
THEN \
|
|
:new.key_veld := FAC_P_FAC_VOLGNR.FAC_VOLGNR_NEXTVAL(fac_volgnr_srt); \
|
|
END IF
|
|
|
|
#define DEFINIEER_VIEW_AANWEZIG(table, verwijder_veld, view_name, level) \
|
|
CREATE_VIEW (view_name,level) AS \
|
|
SELECT * \
|
|
FROM table \
|
|
WHERE table.verwijder_veld IS NULLDATUM
|
|
|
|
#define CHECK_REFERENCE_DEFAULTUITV(key_veld, message) \
|
|
DECLARE \
|
|
dummy CHAR; \
|
|
BEGIN \
|
|
SELECT 'X' INTO dummy \
|
|
FROM mld_v_defaultuitv \
|
|
WHERE bco_defaultuitv_keys = :new.key_veld; \
|
|
EXCEPTION \
|
|
WHEN NO_DATA_FOUND THEN \
|
|
APPLICATION_ERROR(-20000, message); \
|
|
END
|
|
|
|
#define UPDATE_WEEKINGAVE(weekingave_veld) \
|
|
BEGIN \
|
|
:new.weekingave_veld := to_number( \
|
|
to_char(:new.mld_opdr_datumbegin, 'YYWW')); \
|
|
END
|
|
|
|
|
|
#define SET_VERWIJDER_CHILDREN2(child_table, parent_key, child_key, parent_verwijder, \
|
|
child_verwijder) \
|
|
BEGIN \
|
|
IF :new.parent_verwijder IS NOT NULL OR \
|
|
(:new.parent_verwijder IS NULL AND :old.parent_verwijder IS NOT NULL) \
|
|
THEN \
|
|
UPDATE child_table \
|
|
SET child_verwijder = :new.parent_verwijder \
|
|
WHERE \
|
|
child_table.child_key = :new.parent_key; \
|
|
END IF; \
|
|
END
|
|
|
|
|
|
#define DELETE_CHILDREN(child_table, parent_key) \
|
|
BEGIN \
|
|
DELETE FROM child_table \
|
|
WHERE child_table.parent_key = :new.parent_key; \
|
|
END
|
|
|
|
#ifdef LANG_EN
|
|
#define DEF_FAC_ENTITY(a,b,c,d.e) INSERT INTO fac_entity_name VALUES (a,e,c,d)
|
|
#define DEF_FAC_MESSAGE(a,b,c) INSERT INTO fac_message VALUES (a,c)
|
|
#else
|
|
#define DEF_FAC_ENTITY(a,b,c,d,e) INSERT INTO fac_entity_name VALUES (a,b,c,d)
|
|
#define DEF_FAC_MESSAGE(a,b,c) INSERT INTO fac_message VALUES (a,b)
|
|
#endif
|
|
|
|
#define DEF_FAC_FUNCTIE (c, o, m, l) INSERT INTO fac_functie (fac_functie_code, fac_functie_omschrijving,fac_functie_module,fac_functie_min_level) VALUES(c, o, m, l)
|
|
#define UPD_FAC_FUNCTIE (c, o, m, l) UPDATE fac_functie SET fac_functie_omschrijving=0,fac_functie_module=m,fac_functie_min_level=l) WHERE fac_functie_code=c
|
|
#define DEF_FAC_FUNCTIE2(c, o, m, l, d, i) INSERT INTO fac_functie (fac_functie_code, fac_functie_omschrijving,fac_functie_module,fac_functie_min_level, fac_functie_discipline, fac_functie_info) VALUES(c, o, m, l, d, i)
|
|
#define UPD_FAC_FUNCTIE2(c, o, m, l, d, i) UPDATE fac_functie SET fac_functie_omschrijving=0,fac_functie_module=m,fac_functie_min_level=l, fac_functie_discipline=d, fac_functie_info=i) WHERE fac_functie_code=c
|
|
|
|
// NOT_NULL(): Columnconstraint ipv. NOT NULL, De melding ORA-1400: mandatory (NOT NULL)...
|
|
// geeft de constraintnaam niet, zodat de meding niet vertaald kan worden.
|
|
// De CHECK() geeft het wel, dus wordt deze gebruikt.
|
|
#define NOT_NULL(column, constraint_name) CONSTRAINT constraint_name CHECK(column IS NOT NULL)
|
|
|
|
/* Doorloop de onthouden PrimaryKeys via FAC_P_FAC_SAVE_RESTORE en roep voor elke key de functie Func
|
|
* aan. Deze doet de uiteindelijke actie.
|
|
* Func krijgt als argument de key (NUMBER) mee en moet een BOOLEAN teruggeven.
|
|
* Zie ook commentaar in FAC_PAC.SRC.
|
|
*/
|
|
#define FAC_P_FAC_SAVE_RESTORE_UPDATE(Func, TableName) \
|
|
_ORACLE(DECLARE) \
|
|
_DECLARE_VAR(IndexNr) NUMBER; \
|
|
_DECLARE_VAR(PrimaryKey) NUMBER(10); \
|
|
_DECLARE_VAR(Dummy) BOOLEAN; \
|
|
_ORACLE(BEGIN) \
|
|
_SET_VAR(IndexNr) _ASSIGN 1; \
|
|
_SET_VAR(PrimaryKey) _ASSIGN fac_p_fac_save_restore.GetPrimaryKey(TableName, _VAR(IndexNr)); \
|
|
WHILE _VAR(PrimaryKey) IS NOT NULL \
|
|
_ORACLE(LOOP)_MSSQL(begin) \
|
|
_ORACLE( _SET_VAR(Dummy) _ASSIGN Func(PrimaryKey) ); \
|
|
_MSSQL( _EXEC1( Func, _VAR(PrimaryKey)) ); \
|
|
_SET_VAR(IndexNr) _ASSIGN _VAR(IndexNr) + 1; \
|
|
_SET_VAR(PrimaryKey) _ASSIGN fac_p_fac_save_restore.GetPrimaryKey(TableName, _VAR(IndexNr)); \
|
|
_END_LOOP; \
|
|
_MSSQL( _EXEC1( fac_p_fac_save_restore.ResetSelectie, TableName) ); \
|
|
_ORACLE(Dummy := fac_p_fac_save_restore.ResetSelectie(TableName)); \
|
|
_ORACLE(END)
|
|
|
|
#ifdef NO_FSN1141
|
|
|
|
#define DEFINE_MODULE_ROLES(module, modnr) \
|
|
SELECT 'CREATE ROLE '||USER||'_'||module||'_SMALL_ROLE;' FROM dual; \
|
|
~SELECT 'CREATE ROLE '||USER||'_'||module||'_FULL_ROLE;' FROM dual; \
|
|
~SELECT 'CREATE ROLE '||USER||'_'||module||'_ARCHIVE_ROLE;' FROM dual; \
|
|
\
|
|
~SELECT 'GRANT '||USER||'_'||module||'_SMALL_ROLE TO '||USER||'_'||module||'_FULL_ROLE;' FROM dual; \
|
|
~SELECT 'GRANT '||USER||'_'||module||'_FULL_ROLE TO '||USER||'_'||module||'_ARCHIVE_ROLE;' FROM dual; \
|
|
\
|
|
/* Tables */ \
|
|
~SELECT 'GRANT select ON ' || UT.table_name ||' TO '||USER||'_'||module||'_SMALL_ROLE;' \
|
|
FROM user_tables UT, fac_privilege FP \
|
|
WHERE UT.table_name = UPPER(FP.object_name) \
|
|
AND FP.security_level IN (modnr+1,modnr+2,modnr+3) \
|
|
ORDER BY UT.table_name; \
|
|
~SELECT 'GRANT insert,delete,update ON ' || UT.table_name ||' TO '||USER||'_'||module||'_SMALL_ROLE;' \
|
|
FROM user_tables UT, fac_privilege FP \
|
|
WHERE UT.table_name = UPPER(FP.object_name) \
|
|
AND FP.security_level = modnr+1 \
|
|
ORDER BY UT.table_name; \
|
|
~SELECT 'GRANT insert,delete,update ON ' || UT.table_name ||' TO '||USER||'_'||module||'_FULL_ROLE;' \
|
|
FROM user_tables UT, fac_privilege FP \
|
|
WHERE UT.table_name = UPPER(FP.object_name) \
|
|
AND FP.security_level = modnr+2 \
|
|
ORDER BY UT.table_name; \
|
|
~SELECT 'GRANT insert,delete,update ON ' || UT.table_name ||' TO '||USER||'_'||module||'_ARCHIVE_ROLE;' \
|
|
FROM user_tables UT, fac_privilege FP \
|
|
WHERE UT.table_name = UPPER(FP.object_name) \
|
|
AND FP.security_level = modnr+3 \
|
|
ORDER BY UT.table_name; \
|
|
/* Views */ \
|
|
~SELECT 'GRANT select /*,insert,delete,update*/ ON ' || UV.view_name ||' TO '||USER||'_'||module||'_SMALL_ROLE;' \
|
|
FROM user_views UV, fac_privilege FP \
|
|
WHERE UV.view_name = UPPER(FP.object_name) \
|
|
AND FP.security_level IN (modnr+1,modnr+2,modnr+3) \
|
|
ORDER BY UV.view_name; \
|
|
~SELECT 'UPDATE fac_module SET fac_module_extern=1 WHERE fac_module_name='''||module||''';' FROM dual; \
|
|
~PROMPT commit;
|
|
|
|
#endif
|
|
|
|
/* Macros voor het vullen van de INS bibliotheek in INS_DATA.SRC */
|
|
#define DEF_DISCIPLINE(ldis)\
|
|
INSERT INTO ins_tab_discipline (ins_discipline_module, ins_discipline_omschrijving, ins_discipline_min_level) \
|
|
VALUES('INS', SUBSTR(ldis ,1, 30), 1)
|
|
|
|
#define DEF_GROEPSOORT(ldis, lgrp)\
|
|
INSERT INTO ins_srtgroep (ins_discipline_key, ins_srtgroep_module, ins_srtgroep_omschrijving) \
|
|
SELECT ins_discipline_key, 'INS', SUBSTR(lgrp, 1,30) FROM ins_tab_discipline \
|
|
WHERE SUBSTR(UPPER(ins_discipline_omschrijving),1,30) = SUBSTR(UPPER(ldis),1,30)
|
|
|
|
#define DEF_DEELSOORT(ldis, lgrp, lds, lsym, lcode)\
|
|
INSERT INTO ins_srtdeel \
|
|
(ins_srtgroep_key, ins_srtdeel_module, ins_srtdeel_code, \
|
|
ins_srtdeel_acadsymbol, ins_srtdeel_omschrijving,ins_srtdeel_dimensie) \
|
|
SELECT ins_srtgroep_key, 'INS', lcode ,lsym, SUBSTR(lds,1,30), 0 \
|
|
FROM ins_srtgroep \
|
|
WHERE SUBSTR(UPPER(ins_srtgroep_omschrijving),1,30) = SUBSTR(UPPER(lgrp),1,30)
|
|
|
|
#define BEGIN_MODULE(m) \
|
|
DECLARE ~\
|
|
dummy VARCHAR2(1); ~\
|
|
BEGIN ~\
|
|
SELECT 'x'INTO dummy ~\
|
|
FROM fac_module ~\
|
|
WHERE fac_module_name = UPPER(#@m);
|
|
|
|
#define SQL_SPOOL(SQLRegel) \
|
|
dbms_output.put_line(#@SQLRegel);
|
|
|
|
#define END_MODULE(m) \
|
|
EXCEPTION ~\
|
|
WHEN NO_DATA_FOUND THEN dbms_output.put_line('--Module ' ||#@m|| ' niet aanwezig'); ~\
|
|
END; ~/
|
|
|
|
#define UPDMOD(m, n) \
|
|
BEGIN_MODULE(m) ~\
|
|
SQL_SPOOL(START n.m) ~\
|
|
END_MODULE(m)
|
|
|
|
#define UPDATE_VERSION(n) \
|
|
UPDATE FAC_MODULE SET fac_module_VERSION=n
|
|
|
|
#define __T__USER_OBJECTS__OBJECT_TYPE__TYPE \
|
|
VARCHAR2(50)
|
|
|
|
#define __T__ins_discipline__ins_discipline_key__TYPE \
|
|
NUMBER(10)
|
|
|
|
#endif // _COMSQL_H
|