DYNAMIC RESULT SETS 1
LANGUAGE SQL
ss: BEGIN          
            
	            BEGIN
					            DECLARE crs CURSOR WITH RETURN FOR
					            SELECT DISTINCT
							            dde.Name
							     FROM DDCLElement dde
							     WHERE dde.DdsTypeId = 28
							           AND dde.Id IN (SELECT * FROM SESSION.numeric_param_temp) 		
							           AND dde.Id NOT IN
													   (
														  SELECT t.id
														  FROM
														  (
															 SELECT dde1.Id AS id,
																   ddv.Value AS name
															 FROM DDCLElement dde1
																 INNER JOIN DDCLValue ddv ON dde1.Id = ddv.ElementId
																 INNER JOIN DDCLProperty ddp ON ddp.Id = ddv.PropertyId
																						  AND UPPER(ddp.Name) = 'PROGRAM-ID'
															 WHERE dde1.DdsTypeId = 28
							
															 UNION
							
															 SELECT dde2.Id AS id,
																   dde2.Name AS name
															 FROM DDCLElement dde2
																 LEFT OUTER JOIN DDCLProperty ddp1 ON ddp1.ElementId = dde2.Id
																							  AND UPPER(ddp1.Name) = 'PROGRAM-ID'
															 WHERE dde2.DdsTypeId = 28
																  AND ddp1.Id IS NULL
														  ) AS t
														  WHERE UPPER(t.name) IN
																	   (
							             
																		 SELECT UPPER(Programs_1.ProgramName)
																		 FROM Programs pgm
																			 INNER JOIN OccurrencesStmt os ON pgm.ProgramID = os.ProgID
																			 INNER JOIN StatementReference sr ON os.OccurID = sr.OccurID
																			 INNER JOIN Occurrences occ ON occ.OccurID = pgm.OccurID
																			 INNER JOIN Paths pth ON occ.PathID = pth.PathID
																			 INNER JOIN Programs AS Programs_1 ON sr.ResourceID = Programs_1.ProgramID
																		 WHERE sr.ResourceType = 5
																			 AND pgm.OccurID <> 0
																	   )
													   )
							     ORDER BY dde.Name;

				     OPEN crs;
				
                END;
END ss	




