1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| CREATE FUNCTION P0600 (
IN V0 SMALLINT
, IN V1 CHAR(5)
, IN V2 CHAR(5)
, IN V3 CHAR(8)
, IN V4 CHAR(8)
) RETURNS refcursor as
$$
DECLARE
ref refcursor;
I1 VARCHAR(5000);
BEGIN
SET I1 = 'SELECT F0600.F0600_00, F0600_01, F0600_02, F0600_03, F0600_04, F0600_05, F0600_06, F0600_08, F0600_11, F0600_12,
F0601.F0601_00, F0601.F0602_00, F0601.F0603_00, F0601.F0606_00, F0600_13, F0600_16, F0600_17, F0600_18, F0600.F0603_00, F0600.F0606_00,
F0600_19, F0600_20, F0600_21, F0600_22, F0600_23, F0600_24
FROM F0600 AS F0600
LEFT OUTER JOIN F0609 AS F0609 ON F0609.F0600_00 = F0600.F0600_00
LEFT OUTER JOIN F0601 AS F0601 ON F0601.F0601_00 = F0609.F0601_00
WHERE F0600.F0001_00 = ''' || V1 || ''' AND F0600.F0002_00 = ''' || V2 || '''';
IF V0 = 1 THEN
SET I1 = I1 || ' AND ((F0601_03 >= ' || V3 || ' AND F0601_03 < ' || V4 || ')
AND F0601.F0601_00 IS NOT NULL AND F0601.F0602_00 IS NOT NULL AND F0601.F0603_00 IS NOT NULL AND F0601.F0606_00 IS NOT NULL)';
ELSE
SET I1 = I1 || ' AND (F0601.F0601_00 IS NULL OR F0601.F0602_00 IS NULL OR F0601.F0603_00 IS NULL OR F0601.F0606_00 IS NULL)';
END IF;
OPEN ref FOR I1;
RETURN ref;
END;
$$
LANGUAGE 'SQL'; |
Partager