DYNAMIC RESULT SETS 1
LANGUAGE SQL
 BEGIN




		            DECLARE GLOBAL TEMPORARY TABLE SESSION.f1
					(
		                 ID INTEGER,
		                 ElementId INTEGER,
						 ReferenceName   VARGRAPHIC(512),
						 ReferenceDdsTypeId INTEGER
					)
					CCSID UNICODE
					WITH REPLACE 
					   ON COMMIT PRESERVE ROWS
					   NOT LOGGED ;


                    DECLARE GLOBAL TEMPORARY TABLE SESSION.f2
					(
		                 ID INTEGER,
		                 ElementId INTEGER,
						 ReferenceName   VARGRAPHIC(512),
						 ssavID INTEGER,
						 Name VARGRAPHIC(256),
						 ReferenceDdsTypeId INTEGER
					)
					CCSID UNICODE
					WITH REPLACE 
					ON COMMIT PRESERVE ROWS
					NOT LOGGED ;




              INSERT INTO SESSION.f1(Id, ElementId,  ReferenceName,  ReferenceDdsTypeId)
              select ssp.Id, ssp.ElementId, rrv.ReferenceName, rrv.ReferenceDdsTypeId
			  from DDCLProperty ssp
					inner join DDCLValue ssv on ssp.id = ssv.PropertyId and ssv.ValueTypeId = 1 and ssv.Name = 'ALL' and ssv.Value = 'TRUE'
					inner join DDCLValue srv on ssp.id = srv.PropertyId and srv.ValueTypeId = 2 and srv.ReferenceDdsTypeId = 6
					inner join DDCLElement se on se.Name = srv.ReferenceName and se.DdsTypeId = 6
					inner join DDCLValue rrv on rrv.ElementId = se.Id and rrv.ReferenceDdsTypeId IN (3)
			  where ssp.Name =  'SCHEMA'
			;

	
             INSERT INTO SESSION.f2(ID, ElementId,  ReferenceName, ssavID, Name, ReferenceDdsTypeId)
             select ssp.Id, ssp.ElementId , ssv.ReferenceName, ssav.Id AS ssavID, ssp.Name , ssv.ReferenceDdsTypeId
			 from DDCLProperty ssp
				    left outer join DDCLValue ssv on ssp.id = ssv.PropertyId and ssv.ValueTypeId = 2
				    left outer join DDCLValue ssav on ssp.id = ssav.PropertyId  and ssav.ValueTypeId = 1 and ssav.Name = 'ALL' and ssav.Value = 'TRUE'
			 where ssp.Name  = 'RECORD-MAP'
			;



	            BEGIN
					    DECLARE crs CURSOR WITH RETURN FOR
					    SELECT DISTINCT
						            dde.Id,
						            ddv.ReferenceName,
						            ddv.ReferenceDdsTypeId,
						            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,
						            ddp.Name AS PropertyName
						     FROM DDCLElement dde
						          RIGHT OUTER JOIN DDCLValue ddv ON dde.Name = 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
						          INNER JOIN DDCLRelationV AS DDCLRelationV_Parent ON DDCLElementParent.Id = DDCLRelationV_Parent.FromElementId
						          INNER JOIN DDCLElement AS SubschemaElem ON DDCLRelationV_Parent.ToElementId = SubschemaElem.Id
						          LEFT OUTER JOIN DDCLValue AS parent ON parent.Id = ddv.ParentValueId
						          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
						          -- next joins are implemented for filter purpose
						          LEFT OUTER JOIN SESSION.f1 f1 ON f1.ElementId = SubschemaElem.Id AND f1.ReferenceName = ddv.ReferenceName
						          LEFT OUTER JOIN SESSION.f2 f2 ON f2.ElementId = SubschemaElem.Id AND f2.ReferenceDdsTypeId = ddv.ReferenceDdsTypeId
														         AND (f2.ReferenceName = ddv.ReferenceName or f2.ssavID is not null)	
							/*	LEFT OUTER JOIN (
												  select ssp.Id, ssp.ElementId, rrv.ReferenceName, rrv.ReferenceDdsTypeId
												  from DDCLProperty ssp
														inner join DDCLValue ssv on ssp.id = ssv.PropertyId and ssv.ValueTypeId = 1 and ssv.Name = 'ALL' and ssv.Value = 'TRUE'
														inner join DDCLValue srv on ssp.id = srv.PropertyId and srv.ValueTypeId = 2 and srv.ReferenceDdsTypeId = 6
														inner join DDCLElement se on se.Name = srv.ReferenceName and se.DdsTypeId = 6
														inner join DDCLValue rrv on rrv.ElementId = se.Id and rrv.ReferenceDdsTypeId IN (3)
												  where  ssp.Name =  'SCHEMA'
												  )f1 ON f1.ElementId = SubschemaElem.Id AND f1.ReferenceName = ddv.ReferenceName
								LEFT OUTER JOIN (
													 select ssp.Id, ssp.ElementId , ssv.ReferenceName, ssav.Id AS ssavID, ssp.Name , ssv.ReferenceDdsTypeId
													 from DDCLProperty ssp
														    left outer join DDCLValue ssv on ssp.id = ssv.PropertyId and ssv.ValueTypeId = 2
														    left outer join DDCLValue ssav on ssp.id = ssav.PropertyId  and ssav.ValueTypeId = 1 and ssav.Name = 'ALL' and ssav.Value = 'TRUE'
													 where ssp.Name  = 'RECORD-MAP'
												  )f2 ON  f2.ElementId = SubschemaElem.Id
														AND f2.ReferenceDdsTypeId = ddv.ReferenceDdsTypeId
														AND (f2.ReferenceName = ddv.ReferenceName or f2.ssavID is not null)	*/
						     WHERE ddv.ReferenceDdsTypeId = 3
						             AND ddv.ValueTypeId IN (2, 4)
						             AND ddp.Name IN ('CHANGES', 'SELECTION', 'SINGULAR-VIEW', 'OUTPUT', 'PROCESSING-STRUCTURE')
									 AND DDCLElementParent.DdsTypeId = 11
									 AND (parent.ComplexValueTypeId IS NULL OR parent.ComplexValueTypeId <> 32)
									 AND (f1.ID IS NOT NULL  OR f2.ID IS NOT NULL )
									 AND DDCLElementParent.Id IN (SELECT * FROM SESSION.numeric_param_temp)
						     ORDER BY ddv.ReferenceName;
					

				       OPEN crs;
				
                END;

END	
