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 = 3
								           AND dde.Id IN (SELECT * FROM SESSION.numeric_param_temp)
								           AND dde.id NOT IN
													    (
														   SELECT DISTINCT
																DDCLElementChild.Id
														   FROM DDCLElement dde1
															   INNER JOIN DDCLValue ddv ON dde1.Id = ddv.ElementId
															   INNER JOIN DDCLProperty ddp ON ddv.PropertyId = ddp.Id
															   INNER JOIN DDCLElement AS DDCLElementChild ON UPPER(ddv.ReferenceName) = UPPER(DDCLElementChild.Name)
														   WHERE 
														         DDCLElementChild.Id IN (SELECT * FROM SESSION.numeric_param_temp) AND	
															    ddv.ReferenceDdsTypeId = 3
															    AND ddv.ValueTypeId IN (2, 4)
															    AND (
															            (dde1.DdsTypeId = 4   AND UPPER(ddp.Name) = 'PARAMETERS')
																     OR (dde1.DdsTypeId = 11  AND UPPER(ddp.Name) IN ('CHANGES', 'OUTPUT', 'PARAMETERS', 'PROCESSING-STRUCTURE', 'SELECTION', 'SINGULAR-VIEW', 'VARIABLES'))
														             OR (dde1.DdsTypeId = 12  AND UPPER(ddp.Name) IN ('RECORDS', 'STRUCTURE'))
														             OR (dde1.DdsTypeId = 16  AND UPPER(ddp.Name) IN ('CHANGES', 'PROCESSING-STRUCTURE', 'SELECTION', 'SINGULAR-VIEW', 'VARIABLES'))
													                 OR (dde1.DdsTypeId = 26  AND UPPER(ddp.Name) IN ('PARAMETERS', 'VARIABLES'))
													                 OR (dde1.DdsTypeId IN (27, 28) AND UPPER(ddp.Name) IN ('PARAMETERS', 'PROCESSING-STRUCTURE', 'SELECTION', 'VIEW', 'VARIABLES'))
																   )
													    )
								           AND dde.id NOT IN
													    (
														   SELECT DISTINCT
																DDCLElementChild.Id AS ChildId
														   FROM DDCLElement dde2
															   INNER JOIN DDCLValue AS DDCLValue_REC_GROUP ON dde2.Id = DDCLValue_REC_GROUP.ElementId
															   INNER JOIN DDCLProperty AS DDCLProperty_REC_GROUP ON DDCLValue_REC_GROUP.PropertyId = DDCLProperty_REC_GROUP.Id
															   INNER JOIN DDCLElement AS DDCLElement_REC_GROUP ON UPPER(DDCLValue_REC_GROUP.ReferenceName) = UPPER(DDCLElement_REC_GROUP.Name)
																										   AND DDCLValue_REC_GROUP.ReferenceDdsTypeId = DDCLElement_REC_GROUP.DdsTypeId
															   INNER JOIN DDCLValue AS DDCLValue_RECORD ON DDCLElement_REC_GROUP.Id = DDCLValue_RECORD.ElementId
															   INNER JOIN DDCLProperty AS DDCLProperty_RECORD ON DDCLValue_RECORD.PropertyId = DDCLProperty_RECORD.Id
															   INNER JOIN DDCLElement AS DDCLElementChild ON UPPER(DDCLValue_RECORD.ReferenceName) = UPPER(DDCLElementChild.Name)
																									   AND DDCLValue_RECORD.ReferenceDdsTypeId = DDCLElementChild.DdsTypeId
														   WHERE dde2.DdsTypeId = 12
															   AND DDCLElementChild.Id IN (SELECT * FROM SESSION.numeric_param_temp)			
															   AND DDCLValue_REC_GROUP.ReferenceDdsTypeId = 29
															   AND UPPER(DDCLProperty_REC_GROUP.Name) = 'STRUCTURE'
															   AND DDCLValue_RECORD.ReferenceDdsTypeId = 3
															   AND UPPER(DDCLProperty_RECORD.Name) = 'STRUCTURE'
													    )
								         AND dde.id NOT IN
															  (
								         
																    SELECT DISTINCT dde3.id
																    FROM DDCLElement dde3
																	    INNER JOIN IdmsSubschemaRecords isr ON UPPER(dde3.name) = UPPER(isr.RecordName)
																									   AND dde3.ddstypeid = 3
																	    INNER JOIN StatementReference sr ON isr.ID = sr.ResourceID
																									 AND sr.ResourceType = 77
																	    INNER JOIN OccurrencesStmt os ON os.OccurID = sr.OccurID
																	    INNER JOIN Programs pgm ON pgm.ProgramID = os.ProgID
															  )
								     ORDER BY dde.Name;
										   	
								            
				     OPEN crs;
				
                END;
END ss	



