Skip to content
Snippets Groups Projects
Commit 4f8af6e2 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Modif Unicaen_Tbl pour ne plus utiliser la table tbl_dems

parent b25f0e52
No related branches found
No related tags found
1 merge request!55Ll bug report services
CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
TYPE t_dems_values IS TABLE OF BOOLEAN INDEX BY VARCHAR2(80);
TYPE t_dems_params IS TABLE OF t_dems_values INDEX BY VARCHAR2(30);
TYPE t_dems IS TABLE OF t_dems_params INDEX BY VARCHAR2(30);
dems t_dems;
FUNCTION MAKE_WHERE(param VARCHAR2 DEFAULT NULL, value VARCHAR2 DEFAULT NULL,
alias VARCHAR2 DEFAULT NULL) RETURN VARCHAR2 IS
......@@ -7,19 +14,17 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
IF param IS NULL THEN
RETURN '1=1';
END IF;
IF alias IS NOT NULL THEN
res := alias || '.';
END IF;
IF value IS NULL THEN
RETURN res || param || ' IS NULL';
END IF;
RETURN res || param || ' = q''[' || value || ']''';
END;
FUNCTION QUERY_APPLY_PARAM(sqlQuery VARCHAR2, param VARCHAR2, value VARCHAR2) RETURN CLOB IS
pos NUMERIC;
paramLen NUMERIC;
......@@ -32,13 +37,11 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
q CLOB;
BEGIN
q := sqlQuery;
IF param IS NULL THEN
RETURN q;
END IF;
paramlen := length(param);
IF value IS NULL THEN
realValue := ' IS NULL';
ELSE
......@@ -48,32 +51,27 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
WHEN VALUE_ERROR THEN
realValue := 'q''[' || value || ']''';
END;
realValue := '=' || realValue;
END IF;
LOOP
pos := instr(q, '/*@' || param, 1, 1);
EXIT WHEN pos = 0;
debComm := pos - 1;
endComm := instr(q, '*/', pos, 1);
paramComm := substr(q, debComm, endComm - debComm);
debReal := instr(paramComm, '=', 1, 1);
realParam := trim(substr(paramComm, debReal + 1));
--realParam := 'AND ' || substr(q,pos + paramLen + 4,endComm-pos - paramLen - 4);
realParam := 'AND ' || realParam || realValue;
q := substr(q, 1, debComm) || realParam || substr(q, endComm + 2);
END LOOP;
RETURN q;
END;
PROCEDURE CALCULER(TBL_NAME VARCHAR2) IS
BEGIN
ANNULER_DEMANDES(TBL_NAME);
......@@ -81,6 +79,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
END;
PROCEDURE CALCULER(TBL_NAME VARCHAR2, param VARCHAR2, value VARCHAR2) IS
calcul_proc varchar2(30);
BEGIN
......@@ -98,63 +97,59 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
'BEGIN UNICAEN_TBL.C_' || TBL_NAME ||
'(UNICAEN_TBL.CALCUL_PROC_PARAM,UNICAEN_TBL.CALCUL_PROC_VALUE); END;';
END IF;
END;
PROCEDURE DEMANDE_CALCUL(TBL_NAME VARCHAR2, param VARCHAR2, value VARCHAR2) IS
BEGIN
INSERT INTO tbl_dems (ID,
TBL_NAME,
PARAM, VALUE)
VALUES (TBL_DEMS_ID_SEQ.NEXTVAL,
TBL_NAME,
PARAM, VALUE);
dems(TBL_NAME)(param)(value) := TRUE;
END;
PROCEDURE ANNULER_DEMANDES IS
BEGIN
DELETE FROM tbl_dems;
dems.delete;
END;
PROCEDURE ANNULER_DEMANDES(TBL_NAME VARCHAR2) IS
BEGIN
DELETE FROM tbl_dems WHERE tbl_name = ANNULER_DEMANDES.tbl_name;
dems(tbl_name).delete;
END;
FUNCTION HAS_DEMANDES RETURN BOOLEAN IS
has_dems NUMERIC;
BEGIN
SELECT count(*) INTO has_dems from tbl_dems where rownum = 1;
RETURN has_dems = 1;
RETURN dems.count > 0;
END;
PROCEDURE CALCULER_DEMANDES IS
TYPE t_dems IS TABLE OF tbl_dems%rowtype INDEX BY PLS_INTEGER;
dems t_dems;
i NUMERIC DEFAULT 0;
d t_dems;
tbl_name VARCHAR2(30);
param VARCHAR2(30);
value VARCHAR2(80);
BEGIN
FOR d IN (
SELECT DISTINCT tbl_name, param, value FROM tbl_dems
) LOOP
i := i + 1;
dems(i).tbl_name := d.tbl_name;
dems(i).param := d.param;
dems(i).value := d.value;
d := dems;
dems.delete;
tbl_name := d.FIRST;
LOOP EXIT WHEN tbl_name IS NULL;
param := d(tbl_name).FIRST;
LOOP EXIT WHEN param IS NULL;
value := d(tbl_name)(param).FIRST;
LOOP EXIT WHEN value IS NULL;
calculer(tbl_name, param, value);
value := d(tbl_name)(param).NEXT(value);
END LOOP;
DELETE FROM TBL_DEMS;
COMMIT;
i := dems.FIRST;
LOOP EXIT WHEN i IS NULL;
calculer(dems(i).tbl_name, dems(i).param, dems(i).value);
i := dems.NEXT(i);
param := d(tbl_name).NEXT(param);
END LOOP;
tbl_name := d.NEXT(tbl_name);
END LOOP;
IF HAS_DEMANDES THEN -- pour les boucles !!
......@@ -163,6 +158,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
END;
-- AUTOMATIC GENERATION --
PROCEDURE C_AGREMENT(param VARCHAR2, value VARCHAR2) IS
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment