(
 IN p_Input_LinesNumber INTEGER
)
DYNAMIC RESULT SETS 1
LANGUAGE SQL
ss: BEGIN
                DECLARE v_Input_LinesNumber INTEGER;
                SET v_Input_LinesNumber = p_Input_LinesNumber;

	            BEGIN
					    DECLARE crs CURSOR WITH RETURN FOR
		           	    SELECT *
						 FROM (
								 SELECT	 prgAlsxyz.ProgramID,
							            prgAlsxyz.AliasName AS ProgramName,
							            pth.PathStr,
							            occ1.StartRow,
							            CASE
							                WHEN pth.PathID = occ2.PathID
							                THEN 0
							                ELSE -1
							            END AS IsCopy
							     FROM Programs prg
							          INNER JOIN ProgramElements pel ON prg.ProgramID = pel.ProgId
							          INNER JOIN SourceComments sc ON pel.ElementId = sc.FollowedByProgramElementId
							          INNER JOIN Occurrences occ1 ON pel.OccurId = occ1.OccurID
							          INNER JOIN Paths pth ON occ1.PathID = pth.PathID
							          INNER JOIN Occurrences occ2 ON prg.OccurID = occ2.OccurID
									  INNER JOIN ProgramAliases prgAlsxyz ON prg.ProgramId = prgAlsxyz.ProgramID
										AND prgAlsxyz.AliasType = 0
								 WHERE pel.ElementType IN (1, 2, 3, 4)
							          AND sc.LastEmptyLinesCount < v_Input_LinesNumber
							          AND prg.ProgramID IN (SELECT * FROM SESSION.numeric_param_temp)
							     
								UNION
							     SELECT	 prgAlsxyz.ProgramID,
							            prgAlsxyz.AliasName AS ProgramName,
							            pth.PathStr,
							            occ1.StartRow,
							            CASE
							                WHEN pth.PathID = occ2.PathID
							                THEN 0
							                ELSE -1
							            END AS IsCopy
							     FROM Paths pth
									INNER JOIN Occurrences occ1 ON pth.PathID = occ1.PathID
							        INNER JOIN ProgramElements pel ON pel.OccurId = occ1.OccurID 
								    INNER JOIN Programs prg ON pel.ProgId = prg.ProgramID
									INNER JOIN Occurrences AS occ2 ON prg.OccurID = occ2.OccurID 
								  	INNER JOIN ProgramAliases prgAlsxyz ON prg.ProgramId = prgAlsxyz.ProgramID
										AND prgAlsxyz.AliasType = 0
								 WHERE pel.ElementType IN (1, 2, 3, 4)
							          AND prg.ProgramID IN (SELECT * FROM SESSION.numeric_param_temp)
							          AND pel.ElementId NOT IN
							              (
							                  SELECT pe.ElementId
							                  FROM SourceComments sc
							                       INNER JOIN ProgramElements pe ON sc.FollowedByProgramElementId = pe.ElementId
						 					  WHERE pe.ElementType IN (1, 2, 3, 4)
							              )
					      )s
					     ORDER BY s.ProgramName,
					              s.PathStr,
					              s.StartRow;

				        OPEN crs;
				
                END;
 		           
END ss	




