DYNAMIC RESULT SETS 1
LANGUAGE SQL
ss: BEGIN

		-- clean up temp table if exists 
		BEGIN
			DECLARE CONTINUE HANDLER FOR SQLSTATE '42704'
			BEGIN END;
			
			COMMIT;
			DROP TABLE SESSION.stmtassoc;
			
		 END;
		 
		 -- declare temp tables
            DECLARE GLOBAL TEMPORARY TABLE SESSION.stmtassoc
			( 
                 OccurID	INTEGER,
				 RefID1		INTEGER,
				 GroupID	INTEGER,
				 OffSet		INTEGER,
				 VarSize	INTEGER
			) ON COMMIT PRESERVE ROWS NOT LOGGED ;
			
		
		-- fill in temp tables	
		INSERT INTO SESSION.stmtassoc 
		SELECT 
				OccurID, 
				RefID1, 
				GroupID, 
				MAX(COALESCE(OffSet, 0)) AS OffSet, 
				MAX(COALESCE(VarSize, 0)) AS VarSize
           FROM (  
           		SELECT 
           			sr.OccurID, 
           			sr.StatementType, 
           			asoc1.RefID1, 
           			asoc1.GroupID, 
            		CASE asoc1.AssocTypeID
                		WHEN 0 THEN str1.IntValue 
                		ELSE CAST(NULL AS INTEGER)
            		END AS OffSet,
             		CASE asoc1.AssocTypeID 
                		WHEN 1 THEN str1.IntValue 
                		ELSE CAST(NULL AS INTEGER)
            		END AS VarSize
            

	      		FROM StatementreferenceAssociation asoc1
           			INNER JOIN StatementReference sr ON sr.RefID = asoc1.RefID2 AND sr.ResourceType = 221 
			        INNER JOIN IntegerConstants str1 ON str1.ID = sr.ResourceID
		)src
		GROUP BY src.OccurID, src.RefID1, src.GroupID
		ORDER BY src.OccurID;
		COMMIT;
			
	            BEGIN
					    DECLARE crs CURSOR WITH RETURN FOR
						 SELECT * 
					     FROM (
									 SELECT        
									   	   var1.VarID, 
											var2.VarID AS DataDependantVarId, 
											st.Description AS StatementType, 
											pgal.AliasName AS ProgramName, 
										pth.PathStr, 
										os.StartRow,
										var2.IsField,
										var1.VarSize  as Varsize1,
										var2.VarSize  as Varsize2,
										var1.Type,
										var2.Type,
											a1.OffSet  AS Var1OffSet,
											a2.OffSet  AS Var2OffSet,
											a1.VarSize  AS Var1Lenght,
											a2.VarSize  AS Var2Length,
											a1.GroupID AS varGrp1,
											a2.GroupID AS varGrp2

									FROM OccurrencesStmt os
									     INNER JOIN Statements st ON st.StatementType = os.StatementType
									    INNER JOIN Paths pth ON pth.PathID = os.PathID
									    INNER JOIN ProgramAliases pgal ON os.ProgID = pgal.ProgramID AND pgal.AliasType = 0 
									     INNER JOIN StatementReference sr1 ON os.OccurID = sr1.OccurID AND sr1.ResourceType = 4 AND sr1.bRead = 1
									    INNER JOIN Variables var1 ON sr1.ResourceID = var1.VarID 
									    INNER JOIN StatementReference sr2 ON sr1.OccurID = sr2.OccurID AND sr2.ResourceType = 4 AND sr2.bRead = 2  
									    INNER JOIN Variables var2 ON var2.VarID = sr2.ResourceID
									    LEFT OUTER JOIN SESSION.stmtassoc a1 ON sr1.RefID = a1.RefID1 AND os.OccurID = a1.OccurID
									    LEFT OUTER JOIN SESSION.stmtassoc a2 ON sr2.RefID = a2.RefID1 AND os.OccurID = a2.OccurID
									WHERE  (var1.VarID IN (Select * from SESSION.numeric_param_temp))  AND 
										sr1.StatementType NOT IN (14, 18, 23, 30, 326, 390, 412)
											  
									ORDER BY var2.VarID, 
										 	var1.VarID
					          ) x;
						
				        OPEN crs;
				
                END;
END ss	




