DYNAMIC RESULT SETS 1
LANGUAGE SQL
ss: BEGIN
           
            
	            BEGIN
					    DECLARE crs CURSOR WITH RETURN FOR
					    SELECT *
						FROM(
						     SELECT 
						            DDCLElement_SCREEN.Id,
						            DDCLElement_SCREEN.Name AS Name,
						            DDCLElement_SCREEN.DdsTypeId,
						            DDCLElementParent.Id AS ParentId,
						            ElementSourceInfo.StartRow AS ElementStartRow,
						            ElementSourceInfo.EndRow AS ElementEndRow,
						            Paths_1.PathStr AS ElementPathStr,
						            CallSourceInfo.StartRow AS CallStartRow,
						            CallSourceInfo.EndRow AS CallEndRow,
						            Paths_2.PathStr AS CallPathStr
						     FROM DDCLElement AS DDCLElement_SCREEN
						          INNER JOIN DDCLValue AS DDCLValue_1 ON DDCLElement_SCREEN.Id = DDCLValue_1.ElementId
						          INNER JOIN DDCLProperty AS DDCLProperty_1 ON DDCLValue_1.PropertyId = DDCLProperty_1.Id
						          INNER JOIN DDCLValue AS DDCLValue_2 ON UPPER(DDCLValue_1.ReferenceName) = UPPER(DDCLValue_2.ReferenceName)
						                                                     AND DDCLValue_1.ReferenceDdsTypeId = DDCLValue_2.ReferenceDdsTypeId
						          INNER JOIN DDCLProperty AS DDCLProperty_2 ON DDCLValue_2.PropertyId = DDCLProperty_2.Id
						          INNER JOIN DDCLElement AS DDCLElementParent ON DDCLValue_2.ElementId = DDCLElementParent.Id
						          INNER JOIN DDCLSourceInfo AS ElementSourceInfo ON DDCLElement_SCREEN.SourceInfo = ElementSourceInfo.Id
						          INNER JOIN Programs AS Programs_1 ON ElementSourceInfo.ProgramId = Programs_1.ProgramID
						          INNER JOIN Occurrences AS Occurrences_1 ON Programs_1.OccurID = Occurrences_1.OccurID
						          INNER JOIN Paths AS Paths_1 ON Occurrences_1.PathID = Paths_1.PathID
						          INNER JOIN DDCLSourceInfo AS CallSourceInfo ON DDCLValue_1.SourceInfo = CallSourceInfo.Id
						          INNER JOIN Programs AS Programs_2 ON CallSourceInfo.ProgramId = Programs_2.ProgramID
						          INNER JOIN Occurrences AS Occurrences_2 ON Programs_2.OccurID = Occurrences_2.OccurID
						          INNER JOIN Paths AS Paths_2 ON Occurrences_2.PathID = Paths_2.PathID
						     WHERE DDCLElement_SCREEN.DdsTypeId = 14
						          AND DDCLValue_1.ReferenceDdsTypeId = 15
						          AND UPPER(DDCLProperty_1.Name) = 'DISPLAY-SRUCTURE'
						          AND DDCLValue_2.ReferenceDdsTypeId = 15
						          AND UPPER(DDCLProperty_2.Name) = 'DISPLAY-STRUCTURE'
						          AND DDCLElementParent.DdsTypeId = 11
						          AND DDCLElementParent.Id IN (SELECT * FROM SESSION.numeric_param_temp)
						          
						    
						     UNION
						
						
						SELECT 
						       DDCLElement_SCREEN.Id,
						       DDCLElement_SCREEN.Name AS Name,
						       DDCLElement_SCREEN.DdsTypeId,
						       DDCLElementParent.Id AS ParentId,
						       ElementSourceInfo.StartRow AS ElementStartRow,
						       ElementSourceInfo.EndRow AS ElementEndRow,
						       Paths_1.PathStr AS ElementPathStr,
						       CallSourceInfo.StartRow AS CallStartRow,
						       CallSourceInfo.EndRow AS CallEndRow,
						       Paths_2.PathStr AS CallPathStr
						FROM DDCLElement AS DDCLElement_SCREEN
						     INNER JOIN DDCLValue AS DDCLValue_1 ON DDCLElement_SCREEN.Id = DDCLValue_1.ElementId
						     INNER JOIN DDCLProperty AS DDCLProperty_1 ON DDCLValue_1.PropertyId = DDCLProperty_1.Id
						     INNER JOIN DDCLValue AS DDCLValue_2 ON UPPER(DDCLValue_1.ReferenceName) = UPPER(DDCLValue_2.ReferenceName)
						                                                AND DDCLValue_1.ReferenceDdsTypeId = DDCLValue_2.ReferenceDdsTypeId
						     INNER JOIN DDCLProperty AS DDCLProperty_2 ON DDCLValue_2.PropertyId = DDCLProperty_2.Id
						     INNER JOIN DDCLElement AS DDCLElementParent ON DDCLValue_2.ElementId = DDCLElementParent.Id
						     INNER JOIN DDCLSourceInfo AS ElementSourceInfo ON DDCLElement_SCREEN.SourceInfo = ElementSourceInfo.Id
						     INNER JOIN Programs AS Programs_1 ON ElementSourceInfo.ProgramId = Programs_1.ProgramID
						     INNER JOIN Occurrences AS Occurrences_1 ON Programs_1.OccurID = Occurrences_1.OccurID
						     INNER JOIN Paths AS Paths_1 ON Occurrences_1.PathID = Paths_1.PathID
						     INNER JOIN DDCLSourceInfo AS CallSourceInfo ON DDCLValue_1.SourceInfo = CallSourceInfo.Id
						     INNER JOIN Programs AS Programs_2 ON CallSourceInfo.ProgramId = Programs_2.ProgramID
						     INNER JOIN Occurrences AS Occurrences_2 ON Programs_2.OccurID = Occurrences_2.OccurID
						     INNER JOIN Paths AS Paths_2 ON Occurrences_2.PathID = Paths_2.PathID
						     WHERE DDCLElement_SCREEN.DdsTypeId = 14
						          AND DDCLValue_1.ReferenceDdsTypeId = 15
						          AND UPPER(DDCLProperty_1.Name) = 'DISPLAY-STRUCTURE'
						          AND DDCLValue_2.ReferenceDdsTypeId = 15
						          AND UPPER(DDCLProperty_2.Name) = 'PRINT-FORM'
						          AND DDCLElementParent.DdsTypeId = 11
						          AND DDCLElementParent.Id IN (SELECT * FROM SESSION.numeric_param_temp) 
						          
						     UNION
						    
						SELECT 
						       dde.Id,
						       ddv.ReferenceName AS Name,
						       ddv.ReferenceDdsTypeId AS DdsTypeId,
						       ddv.ElementId AS ParentId,
						       ElementSourceInfo.StartRow AS ElementStartRow,
						       ElementSourceInfo.EndRow AS ElementEndRow,
						       Paths_1.PathStr AS ElementPathStr,
						       CallSourceInfo.StartRow AS CallStartRow,
						       CallSourceInfo.EndRow AS CallEndRow,
						       Paths_2.PathStr AS CallPathStr
						FROM DDCLElement dde
						     RIGHT OUTER JOIN DDCLValue ddv  ON UPPER(dde.Name) = UPPER(ddv.ReferenceName)
						                                 AND dde.DdsTypeId = ddv.ReferenceDdsTypeId
						     INNER JOIN DDCLProperty ddp ON ddv.PropertyId = ddp.Id
						     INNER JOIN DDCLElement AS DDCLElementParent ON ddv.ElementId = DDCLElementParent.Id
						     LEFT OUTER JOIN DDCLSourceInfo AS ElementSourceInfo ON dde.SourceInfo = ElementSourceInfo.Id
						     LEFT OUTER JOIN Programs AS Programs_1 ON ElementSourceInfo.ProgramId = Programs_1.ProgramID
						     LEFT OUTER JOIN Occurrences AS Occurrences_1 ON Programs_1.OccurID = Occurrences_1.OccurID
						     LEFT OUTER JOIN Paths AS Paths_1 ON Occurrences_1.PathID = Paths_1.PathID
						     INNER JOIN DDCLSourceInfo AS CallSourceInfo ON ddv.SourceInfo = CallSourceInfo.Id
						     INNER JOIN Programs AS Programs_2 ON CallSourceInfo.ProgramId = Programs_2.ProgramID
						     INNER JOIN Occurrences AS Occurrences_2 ON Programs_2.OccurID = Occurrences_2.OccurID
						     INNER JOIN Paths AS Paths_2 ON Occurrences_2.PathID = Paths_2.PathID
						     WHERE ddv.ReferenceDdsTypeId = 14
						          AND UPPER(ddp.Name) IN ('DISPLAY-STRUCTURE', 'PRINT-FORM')
						          AND DDCLElementParent.DdsTypeId = 11
						          AND DDCLElementParent.Id IN (SELECT * FROM SESSION.numeric_param_temp)
						     )src
						     ORDER BY Name;
					    
				       OPEN crs;
				
                END;
END ss	