LANGUAGE SQL
BEGIN


				            BEGIN
						      COMMIT;
							  TRUNCATE TABLE cacheEZViewer_Usage_IDMS IMMEDIATE ;
				              --DELETE FROM cacheEZViewer_Usage_IDMS ;
				            END;

					


							INSERT INTO cacheEZViewer_Usage_IDMS
							SELECT isc.ID AS IdmsSchemaID,
							       isc.SchemaName AS IdmsSchemaName,
							       isubs.ID AS IdmsSubschemaID,
							       isubs.SubschemaName AS IdmsSubschemaName,
							       SetOrRecord.SetOrRecordID AS SetOrRecordID,
							       SetOrRecord.SetOrRecordName AS SetOrRecordName,
							       st.StatementType AS StatementTypeId,
							       st.Description AS StatementTypeName,
							       sr.ResourceType AS ResourceType,
							       rt.Name AS ResourceTypeName,
							       Paths_Stmt.PathStr AS StmtPathStr,
							       os.StartRow AS StatementStartRow,
							       os.StartCol AS StatementStartColumn,
							       os.EndRow AS StatementEndRow,
							       os.EndCol AS StatementEndColumn,
							       prg.ProgramID AS ProgramId,
							       prg.ProgramName AS ProgramName,
							       prg.ProgramTypeID AS ProgramTypeID,
							       pth.PathStr AS ProgramPath,
							       occ.StartRow AS ProgStartRow,
							       occ.StartCol AS ProgStartCol,
							       occ.EndRow AS ProgEndRow,
							       occ.EndCol AS ProgEndCol,
							       prg.Ancestor AS Ancestor,
							       Programs_Ancestor.ProgramID AS AncestorID,
							       Programs_Ancestor.ProgramTypeID AS AncestorTypeID,
							       Occurrences_Ancestor.StartRow AS AncestorStartRow,
							       Occurrences_Ancestor.StartCol AS AncestorStartCol,
							       Occurrences_Ancestor.EndRow AS AncestorEndRow,
							       Occurrences_Ancestor.EndCol AS AncestorEndCol
							FROM StatementReference sr
							     INNER JOIN OccurrencesStmt os ON sr.OccurID = os.OccurID
							     INNER JOIN ResourceTypes rt ON rt.ResourceID = sr.ResourceType
                                 INNER JOIN
	                                    (
	                                         SELECT p.ProgramID,
								                    p.Ancestor,
												    p.ProgramTypeID,
												    p.OccurID,
								                    pa.AliasName AS ProgramName
								              FROM Programs p
								                   INNER JOIN ProgramAliases pa ON p.ProgramID = pa.ProgramId AND pa.AliasType = 0
								              WHERE p.ProgramTypeID IN (1, 2, 3, 10, 15, 16)
								          ) prg ON os.ProgID = prg.ProgramID
							     INNER JOIN Statements st ON sr.StatementType = st.StatementType
							     INNER JOIN
										 (
											SELECT 78 AS ResourceType, ID AS SetOrRecordID, SetName AS SetOrRecordName,   SubschemaID
											FROM IdmsSubschemaSets
											UNION
											SELECT 77 AS ResourceType, ID AS SetOrRecordID, RecordName AS SetOrRecordName, SubschemaID
											FROM IdmsSubschemaRecords
										 ) SetOrRecord ON sr.ResourceType = SetOrRecord.ResourceType
													   AND sr.ResourceID = SetOrRecord.SetOrRecordID
							     INNER JOIN IdmsSubschema isubs ON SetOrRecord.SubschemaId = isubs.ID
							     INNER JOIN IdmsSchema isc ON isubs.SchemaId = isc.ID
							     INNER JOIN Paths AS Paths_Stmt ON os.PathID = Paths_Stmt.PathID
							     INNER JOIN Occurrences occ ON prg.OccurID = occ.OccurID
							     INNER JOIN Paths pth ON pth.PathID = occ.PathID
							     LEFT OUTER JOIN
								            (
	                                         SELECT DISTINCT
											        p.ProgramID,
								                    --p.Ancestor,
												    p.ProgramTypeID,
												    p.OccurID,
								                    pa.AliasName AS ProgramName
								              FROM Programs p
								                   INNER JOIN ProgramAliases pa ON p.ProgramID = pa.ProgramId
								              WHERE p.ProgramTypeID = 8
								          ) Programs_Ancestor ON Programs_Ancestor.ProgramName = prg.Ancestor
							     LEFT OUTER JOIN Occurrences AS Occurrences_Ancestor ON Programs_Ancestor.OccurID = Occurrences_Ancestor.OccurID
							WHERE sr.ResourceType IN (77, 78) ;

		
END 
