(
 p_Statement_limit INTEGER
)
DYNAMIC RESULT SETS 1
LANGUAGE SQL
ss: BEGIN
            
            DECLARE v_Statement_limit INTEGER;
             
            DECLARE crs CURSOR WITH RETURN FOR
		    SELECT DISTINCT
					 ii.ProgId,
		            prgAlsxyz.AliasName AS ProgramName,
		            pth.PathStr,
		            os.StartRow,
		            CASE
		                WHEN pth.PathID = occ.PathID
		                THEN 0
		                ELSE -1
		            END AS IsCopy
		     FROM Programs prg
		          INNER JOIN Occurrences occ ON prg.OccurID = occ.OccurID
				  INNER JOIN OccurrencesStmt os ON prg.ProgramID = os.ProgID
				  INNER JOIN IfInfo ii ON ii.OccurId = os.OccurID
			      INNER JOIN Paths pth ON os.PathID = pth.PathID 
		    	  INNER JOIN ProgramAliases prgAlsxyz ON prg.ProgramId = prgAlsxyz.ProgramID
					AND prgAlsxyz.AliasType = 0
			 WHERE (ii.NumberOfStatementsInElseBlock > v_Statement_limit OR ii.NumberOfStatementsInThenBlock > v_Statement_limit)
		           AND prg.ProgramTypeID = 1
		     ORDER BY prgAlsxyz.AliasName,
		              pth.PathStr,
		              os.StartRow;
            

            SET v_Statement_limit = p_Statement_limit;
 
            OPEN crs;
            
 END ss