(
IN p_filter VARCHAR(200)
)
DYNAMIC RESULT SETS 1
LANGUAGE SQL
 BEGIN
                        DECLARE v_filter VARCHAR(200);

					    DECLARE crs CURSOR WITH RETURN FOR
						SELECT   x.ProgramName,
					             x.ParaName AS ProcedureName,
					             x.PathStr AS SourceFileName,
					             res.Name AS IncludeName,
					             x.StartRow AS Line,
					             x.NumOfStatements AS NumOfStmts,
								 x.ProgramID
					     FROM Occurrences AS Occurrences_1
					          INNER JOIN Resources res ON Occurrences_1.OccurID = res.OccurID
					          RIGHT OUTER JOIN
										 (SELECT pgm.ProgramID, pgm.ProgramName,  pgm.ProgramTypeID,  pth.PathStr, pth.PathID,  occ.StartRow,
											     par.ParaName, par.NumOfStatements , par.IsExitPara, par.UnreachablePara
										  FROM  Paragraphs par
										               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
																 ) pgm ON par.ProgramID = pgm.ProgramID
													  INNER JOIN Occurrences occ ON par.OccurID = occ.OccurID
													  INNER JOIN Paths pth ON occ.PathID = pth.PathID
										 )x ON Occurrences_1.PathID = x.PathID
					     WHERE x.UnreachablePara = -1
					          AND x.ProgramTypeID = 1
					          AND ((v_filter = '0' AND x.IsExitPara <> -1)  OR v_filter = '1')
					     ORDER BY x.ProgramName,
						          x.ProgramID,
					              res.Name,
					              x.ParaName;

                         SET v_filter = p_filter;
				        OPEN crs;
				
END	
