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