DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN
	BEGIN
		DECLARE crs CURSOR WITH RETURN FOR
		SELECT DISTINCT 
			prg.ProgramTypeID AS SOURCE_TYPE,
			prg.ProgramName AS SOURCE_NAME,
			pth.PathStr AS SOURCE_PATH
		FROM Programs prg 
			LEFT JOIN Occurrences o ON o.OccurID = prg.OccurID 
			LEFT JOIN Paths pth ON pth.PathID = o.PathID
		WHERE prg.ProgramID IN (SELECT * FROM SESSION.numeric_param_temp)

		UNION

		SELECT DISTINCT 
			r.ResourceType AS SOURCE_TYPE, 
			r.Name AS SOURCE_NAME,
			pth.PathStr AS SOURCE_PATH
		FROM StatementReference sr
			INNER JOIN OccurrencesStmt os on os.OccurID =  sr.OccurID
			INNER JOIN Resources r ON r.ResourceID = sr.ResourceID
			LEFT JOIN Occurrences o ON o.OccurID = r.OccurID 
			LEFT JOIN Paths pth ON pth.PathID = o.PathID
		WHERE 
			sr.ResourceType IN (13, 67, 99, 57, 60)
			AND os.ProgID IN (SELECT * FROM SESSION.numeric_param_temp)

		UNION

		SELECT DISTINCT 
			sr.ResourceType AS SOURCE_NAME, 
			am.MacroName AS SOURCE_TYPE, 
			pth.PathStr AS SOURCE_PATH
		FROM Programs prg
			INNER JOIN OccurrencesStmt os ON prg.ProgramID = os.ProgID
			INNER JOIN  StatementReference sr ON os.OccurID = sr.OccurID AND sr.ResourceType = 98
			INNER JOIN AssemblerMacros am ON sr.ResourceID = am.ID
			LEFT JOIN Occurrences o ON o.OccurID = am.OccurId
			LEFT JOIN Paths pth ON pth.PathID = o.PathID
		WHERE 
			am.MacroType = 2
			AND prg.ProgramID IN (SELECT * FROM SESSION.numeric_param_temp);
								
		OPEN crs;
				
	END;
END
