diff --git a/SmartSQL/SmartSQL.Framework/Exporter/DmExporter.cs b/SmartSQL/SmartSQL.Framework/Exporter/DmExporter.cs index a644e41a62bf0d752bb171fb4cfc1b1b67c6502b..6c7863eb36815a7598798b54d84bab9b59112e55 100644 --- a/SmartSQL/SmartSQL.Framework/Exporter/DmExporter.cs +++ b/SmartSQL/SmartSQL.Framework/Exporter/DmExporter.cs @@ -63,7 +63,7 @@ namespace SmartSQL.Framework.Exporter { #region MyRegion var dbClient = SugarFactory.GetInstance(SqlSugar.DbType.Dm, DbConnectString); - var dataBaseList = dbClient.Ado.SqlQuery("select distinct object_name from all_objects where object_type = 'SCH';"); + var dataBaseList = dbClient.Ado.SqlQuery("SELECT NAME from SYSOBJECTS where TYPE$='SCH' and PID=UID()"); var dbList = new List(); dataBaseList.ForEach(x => { @@ -91,21 +91,18 @@ namespace SmartSQL.Framework.Exporter #region MyRegion var tables = new Tables(); var tbSql = $@"SELECT - a.table_name AS NAME, - b.comments AS Description + table_name AS NAME, + comments AS Description, + a.Created as CreateDate , + ifnull(a.LAST_DDL_TIME,a.CREATED) as ModifyDate FROM - dba_tables AS a - LEFT OUTER JOIN USER_TAB_COMMENTS b - ON - a.table_name = b.table_name + ALL_OBJECTS a LEFT JOIN + ALL_TAB_COMMENTS b + on a.OBJECT_NAME=b.TABLE_NAME WHERE - a.table_name!='HELP' - AND a.table_name NOT LIKE '%$%' - AND a.table_name NOT LIKE 'LOGMNRC_%' - AND a.table_name!='LOGMNRP_CTAS_PART_MAP' - AND a.table_name!='LOGMNR_LOGMNR_BUILDLOG' - AND a.table_name!='SQLPLUS_PRODUCT_PROFILE' - AND a.Owner = '{DbName}'"; + TABLE_TYPE='TABLE' + AND a.OWNER = '{DbName}' + AND b.OWNER = '{DbName}'"; var dbClient = SugarFactory.GetInstance(SqlSugar.DbType.Dm, DbConnectString); var tableList = dbClient.SqlQueryable(tbSql).ToList(); tableList.ForEach(tb => @@ -141,14 +138,15 @@ namespace SmartSQL.Framework.Exporter a.Object_Name as Name , b.Comments as Description, a.Created as CreateDate , - a.Created as ModifyDate + ifnull(a.LAST_DDL_TIME,a.CREATED) as ModifyDate from - dba_objects as a - left join USER_TAB_COMMENTS as b + all_objects as a + left join ALL_TAB_COMMENTS as b on a.Object_Name=b.table_name where - OWNER = '{DbName}' + a.OWNER = '{DbName}' + and b.OWNER = '{DbName}' and Object_type='VIEW'"; var dbClient = SugarFactory.GetInstance(SqlSugar.DbType.Dm, DbConnectString); var viewList = dbClient.SqlQueryable(tbSql).ToList(); @@ -191,7 +189,54 @@ namespace SmartSQL.Framework.Exporter { #region MyRegion var columns = new Columns(500); - var viewList = _dbClient.DbMaintenance.GetColumnInfosByTableName(objectId); + // var viewList = _dbClient.DbMaintenance.GetColumnInfosByTableName(objectId); + var sql = $@"select + distinct 0 as TableId, + A.Table_Name AS TableName, + A.COLUMN_ID AS DbColumnId, + A.column_name AS DbColumnName, + A.data_type AS DataType, + A.data_length AS Length, + A.Data_Default AS DefaultValue, + B.comments AS ColumnDescription, + A.data_scale AS Scale, + case when E.constraint_type = 'P' then true else false end AS IsPrimaryKey, + case when A.nullable = 'Y' then true else false end AS IsNullable, + case when ident.FLAG = 1 then true else false end AS IsIdentity + from + user_tab_columns AS A + left join user_col_comments AS B on A.COLUMN_NAME = b.column_name + left join ( + select + t1.column_name, + t1.table_name, + t2.constraint_type + from + user_ind_columns AS t1 + left join user_constraints AS t2 on t1.index_name = t2.index_name + ) AS E on A.Table_Name = E.table_name and A.column_name = E.column_name + LEFT JOIN ( + select + SO.NAME TABLE_NAME, + SCO.NAME COLUMN_NAME, + 1 FLAG + from + SYSCOLUMNS SCO + JOIN SYSOBJECTS SO ON SCO.ID = SO.id AND SO.SUBTYPE$ = 'UTAB' + WHERE + SCO.INFO2 & 0x0001 = 1 + and sf_get_schema_name_by_id(SO.SCHID) = '{DbName}' + and SO.NAME = '{objectId}' + ) ident on ident.COLUMN_NAME = a.COLUMN_NAME + where + A.COLUMN_NAME = b.column_name + and A.Table_Name = B.Table_Name + and A.Table_Name = '{objectId}' + and B.OWNER = '{DbName}' + ORDER BY + DbColumnId"; + var dbClient = SugarFactory.GetInstance(SqlSugar.DbType.Dm, DbConnectString); + var viewList = dbClient.SqlQueryable(sql).ToList(); viewList.ForEach(v => { if (columns.ContainsKey(v.DbColumnName)) @@ -255,7 +300,7 @@ namespace SmartSQL.Framework.Exporter 'View' as Type, text as definition from - dba_Views + All_Views where owner = '{DbName}' and view_name = '{objectId}'"; @@ -331,7 +376,21 @@ namespace SmartSQL.Framework.Exporter public override bool UpdateColumnRemark(Column columnInfo, string remark, DbObjectType objectType = DbObjectType.Table) { - throw new NotImplementedException(); + var result = false; + if (objectType == DbObjectType.Table) + { + //result = _dbClient.DbMaintenance.AddColumnRemark("\""+columnInfo.ObjectName+"\"","\""+columnInfo.ObjectId+"\"",remark); + result = _dbClient.DbMaintenance.AddColumnRemark(columnInfo.ObjectName,columnInfo.ObjectId,remark); + } + if (objectType == DbObjectType.View) + { + throw new NotSupportedException(); + } + if (objectType == DbObjectType.Proc) + { + throw new NotSupportedException(); + } + return result; } public override bool UpdateObjectRemark(string objectName, string remark, DbObjectType objectType = DbObjectType.Table)