DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN

               DECLARE crs CURSOR WITH RETURN FOR
			   SELECT prg.ProgramName,
	            res.Name AS DBITable,
	            st.Description,
	            acc.pattern AS DBIPattern,
	            COUNT(os.OccurID) AS stmtCount,
				prg.ProgramID
	     FROM StatementReference sr
	          INNER JOIN OccurrencesStmt os ON sr.OccurID = os.OccurID
	          INNER JOIN Statements st ON os.StatementType = st.StatementType
	          INNER JOIN (
					   SELECT p.ProgramID,
							 --p.Ancestor,
							 p.ProgramTypeID,
							 --p.OccurID,
							 pa.AliasName AS ProgramName
					   FROM Programs p
						  INNER JOIN ProgramAliases pa ON p.ProgramID = pa.ProgramId AND pa.AliasType = 0
					   WHERE p.ProgramTypeID = 1	
				    ) prg ON os.ProgID = prg.ProgramID
	          INNER JOIN Resources res ON sr.ResourceID = res.ResourceID
	                                      AND sr.ResourceType = 190
	          LEFT OUTER JOIN
						    (
							   SELECT ar.Name AS pattern,
									  asr.occurid AS occid
							   FROM StatementReference AS asr
								   INNER JOIN Resources AS ar ON asr.ResourceID = ar.ResourceID
															  AND asr.ResourceType = 191
						    ) AS acc ON acc.occid = os.OccurID
	     GROUP BY prg.ProgramName,
	              res.Name,
	              st.Description,
	              acc.pattern,
				  prg.ProgramID
	     ORDER BY prg.ProgramName,
		          prg.ProgramID,
	              res.Name,
	              st.Description,
	              acc.pattern;

          OPEN crs;

 END 
