DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN

        BEGIN


            DECLARE GLOBAL TEMPORARY TABLE SESSION.Prg
			(
			  ProgramID INT,
			  ProgramCnt INT
			)
			WITH REPLACE 
            ON COMMIT PRESERVE ROWS
			NOT LOGGED;


            INSERT INTO SESSION.Prg(ProgramID, ProgramCnt)
            SELECT prg1.ProgramID, COUNT(prg1.ProgramID) AS ProgramCNT
			FROM Programs prg1
				INNER JOIN OccurrencesStmt os2 ON prg1.ProgramID = os2.ProgID
			WHERE os2.StatementType = 21
			GROUP BY prg1.ProgramID;



	            BEGIN

					    DECLARE crs CURSOR WITH RETURN FOR	
						SELECT *
							FROM
							    (
							     SELECT	 prgAlsxyz.ProgramID,
							            prgAlsxyz.AliasName AS ProgramName,
							            pth.PathStr,
							            1 AS StartRow,
							            0 AS IsCopy
							     FROM Programs prg
							          INNER JOIN Occurrences occ ON prg.OccurID = occ.OccurID
							          INNER JOIN Paths pth ON occ.PathID = pth.PathID
							          LEFT OUTER JOIN SESSION.Prg sp ON sp.ProgramID = prg.ProgramID
							     	  INNER JOIN ProgramAliases prgAlsxyz ON prg.ProgramId = prgAlsxyz.ProgramID
										AND prgAlsxyz.AliasType = 0
								 WHERE prg.ProgramID IN (SELECT * FROM SESSION.numeric_param_temp)
								       AND sp.ProgramID IS NULL											
							
							
							    UNION
							     SELECT	 prgAlsxyz.ProgramID,
							            prgAlsxyz.AliasName AS ProgramName,
							            pth.PathStr,
							            os1.StartRow,
							            CASE
							                WHEN os1.PathID = occ.PathID
							                THEN 0
							                ELSE -1
							            END AS IsCopy
							     FROM Programs prg
							          INNER JOIN OccurrencesStmt os1 ON prg.ProgramID = os1.ProgID
							          INNER JOIN Occurrences occ ON prg.OccurID = occ.OccurID
							          INNER JOIN Paths pth  ON os1.PathID = pth.PathID
							          INNER JOIN SESSION.Prg sp ON sp.ProgramID = prg.ProgramID AND sp.ProgramCnt > 1
							    	  INNER JOIN ProgramAliases prgAlsxyz ON prg.ProgramId = prgAlsxyz.ProgramID
										AND prgAlsxyz.AliasType = 0
								 WHERE  os1.StatementType = 21
							            AND prg.ProgramID IN (SELECT * FROM SESSION.numeric_param_temp)
							
							
							    )src
							     ORDER BY src.ProgramName,
							              src.PathStr;
					
					
                        OPEN crs;

                  END;
        END;
		
 END	
