DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN


			DECLARE GLOBAL TEMPORARY TABLE SESSION.programWithAlias
			(
                 ProgramID     INTEGER,
				 ProgramName   VARCHAR(256),
				 ProgramTypeID INTEGER,
				 OccurID       INTEGER,
				 AncestorID    INTEGER,
				 Ancestor      VARCHAR(256)
			) WITH REPLACE 
			  ON COMMIT PRESERVE ROWS
			  NOT LOGGED;

             INSERT INTO SESSION.programWithAlias (ProgramID, ProgramName, ProgramTypeID, OccurID, AncestorID, Ancestor)
             SELECT t.ProgramID, t.ProgramName, t.ProgramTypeID, t.OccurID, t.AncestorID, t.AncestorName
	         FROM TABLE(
			            fGetProgram_Ancestor_Aliases( CAST(NULL AS INTEGER) )
			         )t
			;
			
			
	            BEGIN


					    DECLARE crs CURSOR WITH RETURN FOR
					        SELECT *
							FROM
							    (
							
									  SELECT res.Name AS TransactionName,
										    res.ResourceID,
										    pgm.ProgramID AS CalledProgId,
								            pgm.ProgramName AS CalledProgramName,
								            pgm.ProgramTypeID AS CalledProgramTypeID,
								            pgm.Ancestor AS CalledAncestorName,
								            pgm.OccurId,
								            0 AS isMapped										
									  FROM Resources res
										  INNER JOIN SESSION.programWithAlias pgm ON res.ProgName = pgm.ProgramName
									  WHERE res.ResourceType = 14
							                AND res.Name IN (SELECT * FROM SESSION.string_param_temp)
								
									   UNION
							
								     SELECT res.Name AS TransactionName,
										    res.ResourceID,
										    pgm.ProgramID AS CallingProgId,
								            pgm.ProgramName AS CallingProgramName,
								            pgm.ProgramTypeID AS CallingProgramTypeID,
								            pgm.Ancestor AS CallingAncestorName,
								            pgm.OccurId,
								            1 AS isMapped
									  FROM Resources res
										  INNER JOIN StatementReference sr ON sr.ResourceID = res.ResourceID
										  INNER JOIN OccurrencesStmt os ON os.OccurID = sr.OccurID
										  INNER JOIN SESSION.programWithAlias pgm ON os.ProgID = pgm.ProgramID
										  INNER JOIN Paths pth ON pth.PathID = os.PathID
										  --LEFT OUTER JOIN Programs AS Programs_1 ON Programs_1.ProgramName = res.ProgName
									  WHERE sr.ResourceType = 14
									        AND res.Name IN (SELECT * FROM SESSION.string_param_temp)
								)src
							     ORDER BY TransactionName
							              ,isMapped;

				       OPEN crs;
				
                END;
				

		
END 
