LANGUAGE SQL
sp:BEGIN   
    BEGIN
      COMMIT; 
      TRUNCATE TABLE 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,
		                    UPPER(p.Ancestor) AS AncestorU,
						    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,
		                    UPPER(pa.AliasName) AS ProgramNameU
		              FROM Programs p
		                   INNER JOIN ProgramAliases pa ON p.ProgramID = pa.ProgramId 
		              WHERE p.ProgramTypeID = 8
		          ) Programs_Ancestor ON Programs_Ancestor.ProgramNameU = prg.AncestorU                                       
	     LEFT OUTER JOIN Occurrences AS Occurrences_Ancestor ON Programs_Ancestor.OccurID = Occurrences_Ancestor.OccurID
	WHERE sr.ResourceType IN (77, 78) ;
END 