DYNAMIC RESULT SETS 1
LANGUAGE SQL
ss: BEGIN

	            BEGIN
					    DECLARE crs CURSOR WITH RETURN FOR
						SELECT  f.LogicalName AS File_Name,
					            pa.AliasName AS ProgramName,
					            st.Description AS Statement_Type,
					            COUNT(DISTINCT os.OccurID) AS Expr1,
					            prg.Ancestor,
                               (prg.Ancestor || pa.AliasName) AS k,
							   pth.PathStr
					     FROM StatementReference sr
					          INNER JOIN OccurrencesStmt os ON sr.OccurID = os.OccurID
					          INNER JOIN Files f ON sr.ResourceID = f.FileID
					          INNER JOIN Programs prg ON os.ProgID = prg.ProgramID
					          INNER JOIN ProgramAliases pa ON prg.ProgramID = pa.ProgramId AND pa.AliasType = 0
					          INNER JOIN Statements st ON sr.StatementType = st.StatementType
							  LEFT OUTER JOIN
							                 (
							                    SELECT  1 AS Flag,
										                pgxa.AliasName,
										                pgx.ProgramTypeID
										         FROM Programs pgx
										              INNER JOIN ProgramAliases pgxa ON pgx.ProgramID = pgxa.ProgramId
										                                               AND pgxa.AliasType = 0
										         GROUP BY pgxa.AliasName, pgx.ProgramTypeID
										         HAVING COUNT(*) > 1
											 ) x ON pa.AliasName = x.AliasName
											        AND prg.ProgramTypeID = x.ProgramTypeID
							  LEFT OUTER JOIN Occurrences occ ON occ.OccurID = prg.OccurID						
							  LEFT OUTER JOIN Paths pth ON 	pth.PathID = occ.PathID AND x.Flag = 1
					     WHERE sr.ResourceType = 9
					           AND  f.FileID IN (SELECT * FROM SESSION.numeric_param_temp)
					     GROUP BY f.LogicalName, pa.AliasName, st.Description, prg.Ancestor, pth.PathStr
					     ORDER BY f.LogicalName, k, st.Description; 

				         OPEN crs;
				
                END;
END ss	




