AS 
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 #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 #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 #numeric_param_temp)

