(
IN p_positiveOccurId INTEGER
)
DYNAMIC RESULT SETS 1
CALLED ON NULL INPUT
LANGUAGE SQL
 BEGIN

                        --@positiveOccurId INT = 0 -- 0 for all screen, 1 screen having occur id > 0
						
                       DECLARE v_positiveOccurId INTEGER;

                       SET v_positiveOccurId = COALESCE(p_positiveOccurId, 0);

                       BEGIN
							    DECLARE crs CURSOR WITH RETURN FOR
								SELECT *
								FROM(
								--BMS Map
								     SELECT
								            b.BmsName AS ScreenName,
								            b.occurid,
								            Bms_1.BmsName AS MAPSET,
								            119 AS screenType,
								            b.BmsID
								     FROM Bms b
								          LEFT JOIN Bms Bms_1 ON b.AncestorID = Bms_1.BmsID
								     WHERE Bms_1.BmsName IS NOT NULL
								          AND (v_positiveOccurId = 0 OR b.occurid > 0)
								
									UNION
								
								--ADS Map				
								
								      SELECT
								           am.MapName AS ScreenName,
								           am.occurid,
								           CAST(NULL AS VARCHAR(50)) AS MapSet,
								           118 AS screenType,
								           am.MapID
								    FROM AdsMaps am
								    WHERE (v_positiveOccurId = 0 OR am.occurid > 0)
								
								    UNION 	
								    --Natural Map
								
								    SELECT
								           nm.MapName AS ScreenName,
								           nm.OccurID,
								           NaturalMaps_1.MapName AS MapSet,
								           120 AS screenType,
								           nm.MapID
								    FROM NaturalMaps nm
								         LEFT OUTER JOIN NaturalMaps AS NaturalMaps_1 ON nm.AncestorID = NaturalMaps_1.MapID
								    WHERE nm.MapID <> 1
								          AND (v_positiveOccurId = 0 OR nm.OccurID > 0)
								
								
								    UNION
								    --Smart/AS400
								
								    SELECT
								           sd.ScreenName AS ScreenName,
								           sd.OccurId,
								           CAST(NULL AS VARCHAR(50)) AS MapSet,
								           121 AS screenType,
								           sd.ID
								    FROM ScreenDDS sd
								    WHERE (v_positiveOccurId = 0 OR sd.OccurId > 0)
								
								    UNION
								    --TPMSX
								
								
								    SELECT
								           res.Name AS screenName,
								           CAST(NULL AS INTEGER) AS OccurID,
								           CAST(NULL AS VARCHAR(50)) AS MapSet,
								           101 AS screenType,
								           res.ResourceID
								    FROM Resources res
								    WHERE res.ResourceType = 101
								          AND v_positiveOccurId = 0
								
								    UNION
								    --IMS MAP
								
								
								    SELECT
								           im.MapName AS ScreenName,
								           im.OccurID AS OccurID,
								            CAST(NULL AS VARCHAR(50)) AS MapSet, --IMSMaps_1.MapName AS MapSet,
								           65 AS screenType,
								           im.MapID
								    FROM IMSMaps im
								         --LEFT JOIN IMSMaps IMSMaps_1 ON im.AncestorID = IMSMaps_1.MapID
								    WHERE --IMSMaps_1.MapName IS NOT NULL AND
										 (im.OccurID > 0 OR v_positiveOccurId = 0)
								    )src
								 ORDER BY screenName,
								          screenType;
		
						        OPEN crs;
				        END;
				

END	
