DYNAMIC RESULT SETS 1
LANGUAGE SQL
 BEGIN

	            BEGIN
					             DECLARE crs CURSOR WITH RETURN FOR
								 SELECT ProgramName, ProgramID,
									    SgDBId, SgDBName, SgID, SgName,
									    SourceSgDBId, SourceSgDBName, SourceSgID, SourceSgName,
									    StatementTypeDescription, COUNT(OccurID) AS Occ
								  FROM (
										    SELECT
											     p.AliasName AS ProgramName, p.ProgramID,
												 sg.DBId AS SgDBId,
												 db.DBName AS SgDBName,
												 sg.SegmentId AS SgID,
												 sg.SegmentName AS SgName,
												 srcsg.DBID AS SourceSgDBId,
												 srcsg.DBName AS SourceSgDBName,
												 srcsg.SegmentID AS SourceSgID,
												 srcsg.SegmentName AS SourceSgName,
												 st.Description AS StatementTypeDescription,
												 os.OccurID
										    FROM ProgramAliases p
											    INNER JOIN OccurrencesStmt os ON p.ProgramID = os.ProgID
											    INNER JOIN StatementReference sr ON os.OccurID = sr.OccurID
											    INNER JOIN Statements st ON sr.StatementType = st.StatementType
											    INNER JOIN IMSDBSegments sg ON  sr.ResourceID = sg.SegmentId
											    INNER JOIN IMSDBInfo db ON db.DBId = sg.DBId
											    LEFT OUTER JOIN
															( SELECT sg.SegmentID, sg.SegmentName, sg.DBID, db.DBName
															  FROM IMSDBSegments sg
																  INNER JOIN IMSDBInfo db ON db.DBId = sg.DBId
															) srcsg ON sg.SourceSegId = srcsg.SegmentID
										    WHERE sr.ResourceType = 209
											       AND p.AliasType = 0
												   AND p.ProgramID IN (SELECT * FROM SESSION.numeric_param_temp)
										 )s
						          GROUP BY ProgramID, ProgramName, SgDBId, SgDBName, SgID, SgName, SourceSgDBId, SourceSgDBName, SourceSgID, SourceSgName, StatementTypeDescription
								  ORDER BY ProgramName, ProgramID, SgDBName, SgName, StatementTypeDescription;

								 OPEN crs;
				
                END;
END	
