CREATE OR REPLACE PROCEDURE PRC_Maj_Flag_Integrer_TM
(
i_lot IN VARCHAR2,
i_PrefixeErreur IN VARCHAR2
) IS
PrefixeErreur VARCHAR2(6);
TT_Prefixe VARCHAR2(3);
TT_Table VARCHAR2(30);
TT_Colonne VARCHAR2(30);
TT_Chrono VARCHAR2(30);
TT_Lot VARCHAR2(30);
TT_Integrer VARCHAR2(30);
TM_Table VARCHAR2(30);
TM_Colonne VARCHAR2(30);
TM_Chrono VARCHAR2(30);
TM_Lot VARCHAR2(30);
TM_Integrer VARCHAR2(30);
zTestUnderScore VARCHAR2(1);
RequeteSQL VARCHAR2(1000);
SousRequeteSQL VARCHAR2(500);
BEGIN
PrefixeErreur := i_PrefixeErreur || '%';
IF (SUBSTR(PrefixeErreur, 2, 1) = '_') THEN
zTestUnderScore := '_';
ELSE
zTestUnderScore := SUBSTR(PrefixeErreur, 2, 1);
END IF;
SELECT DISTINCT TEC_NOM_TABLE_CTRL,TEC_PREFIXE,
TEC_NOM_COL_TABLE_SOURCE,TEC_NOM_TABLE_MAITRE,
TEC_NOM_COL_TABLE_MAITRE
INTO TT_Table,
TT_Prefixe,
TT_Colonne,
TM_Table,
TM_Colonne
FROM &6..TEC_ERREURS_CODES
WHERE TEC_CODE_ERREUR LIKE PrefixeErreur AND
SUBSTR(TEC_CODE_ERREUR, 2, 1) = zTestUnderScore;
TT_Chrono := TT_Prefixe || '_SASMIG_CHRONO';
TT_Lot := TT_Prefixe || '_SASMIG_LOT';
TT_Integrer := TT_Prefixe || '_SASMIG_A_INTEGRER';
TM_Chrono := SUBSTR(TM_Colonne, 1, 3) || '_SASMIG_CHRONO';
TM_Lot := SUBSTR(TM_Colonne, 1, 3) || '_SASMIG_LOT';
TM_Integrer := SUBSTR(TM_Colonne, 1, 3) || '_SASMIG_A_INTEGRER';
SousRequeteSQL := 'SELECT 1 FROM '
|| TRIM(TT_Table)
|| ' WHERE '
|| TRIM(TT_Lot)
|| ' = '
|| ''''
|| TRIM(i_lot)
|| ''''
|| ' AND '
|| TRIM(TT_Integrer)
|| ' = 0 AND '
|| TRIM(TM_Integrer)
|| ' = 1 AND '
|| TRIM(TT_Colonne)
|| ' = '
|| TRIM(TM_Colonne);
RequeteSQL := 'UPDATE '
|| TRIM(TM_Table)
|| ' SET '
|| TRIM(TM_Integrer)
|| ' = 0 WHERE EXISTS ('
|| TRIM(SousRequeteSQL)
|| ')';
EXECUTE IMMEDIATE RequeteSQL;
COMMIT;
END
Partager