DYNAMIC RESULT SETS 1
LANGUAGE SQL
 BEGIN

        BEGIN
		
            DECLARE GLOBAL TEMPORARY TABLE SESSION.DDCLFromPrograms
			(
			  ids INTEGER
			)WITH REPLACE 
			    ON COMMIT PRESERVE ROWS
			    NOT LOGGED;

            INSERT INTO SESSION.DDCLFromPrograms(ids)
            SELECT DISTINCT dde.id
	        FROM Programs pgm
	                INNER JOIN OccurrencesStmt os ON pgm.ProgramID = os.ProgID
	                INNER JOIN StatementReference sr ON os.OccurID = sr.OccurID
				    INNER JOIN (
											   SELECT r.ResourceID, r.OccurID,
													  SUBSTR(r.Name, LOCATE_IN_STRING(r.Name, '-') + 1, LENGTH(r.Name)) AS DDCLElement_Name,
													  SUBSTR(r.Name, 1, CASE WHEN LOCATE_IN_STRING(r.Name, '-')> 0 THEN LOCATE_IN_STRING(r.Name, '-') - 1 ELSE 0 END  ) AS DDCLDdsType_Name
												FROM Resources r
												WHERE r.ResourceType = 13
								) r ON sr.ResourceID =r.ResourceID
	                INNER JOIN DDCLElement dde ON dde.Name = r.DDCLElement_Name
	                INNER JOIN DDCLDdsType dddt ON dddt.Name = DDCLDdsType_Name
	         WHERE dde.DdsTypeId = 12;


	            BEGIN
					     DECLARE crs CURSOR WITH RETURN FOR
					     SELECT DISTINCT dde.Name
				         FROM DDCLElement dde
				         WHERE dde.DdsTypeId = 12
				               AND dde.Id IN (SELECT * FROM SESSION.numeric_param_temp)
				               AND dde.id NOT IN
												 (
				
													   SELECT DISTINCT
															dde1.Id
													   FROM DDCLElement dde1
														   RIGHT JOIN DDCLValue ddv ON dde1.Name = ddv.ReferenceName
																				 AND dde1.DdsTypeId = ddv.ReferenceDdsTypeId
														   INNER JOIN DDCLProperty ddp ON ddv.PropertyId = ddp.Id
														   INNER JOIN DDCLElement AS DDCLElementParent ON ddv.ElementId = DDCLElementParent.Id
													   WHERE ddv.ReferenceDdsTypeId = 12
														   AND dde1.Id IN  (SELECT * FROM SESSION.numeric_param_temp)
														   AND ddp.Name IN ('FILES', 'SELECTION')
														   AND DDCLElementParent.DdsTypeId IN (27, 28)
												 )
				         AND dde.id NOT IN (SELECT * FROM SESSION.DDCLFromPrograms)
				         ORDER BY dde.Name;

					
				         OPEN crs;
				
                END;
		END;
		
END	
