예제 #1
0
 private void parseInsertStmt(TInsertSqlStatement insert)
 {
     if (insert.TargetTable.TableName != null)
     {
         string        tableName     = insert.TargetTable.TableName.TableString;
         string        tableSchema   = insert.TargetTable.TableName.SchemaString;
         string        databaseName  = insert.TargetTable.TableName.DatabaseString;
         TableMetaData tableMetaData = new TableMetaData(vendor, strict);
         tableMetaData.Name       = tableName;
         tableMetaData.SchemaName = tableSchema;
         if (isNotEmpty(databaseName))
         {
             tableMetaData.CatalogName = databaseName;
         }
         else
         {
             tableMetaData.CatalogName = database;
         }
         tableMetaData.View = false;
         if (!tableColumns.ContainsKey(tableMetaData))
         {
             tableColumns[tableMetaData] = new List <ColumnMetaData>();
         }
         else
         {
             IList <TableMetaData> tables = new List <TableMetaData>(tableColumns.Keys);
             tableMetaData      = (TableMetaData)tables[tables.IndexOf(tableMetaData)];
             tableMetaData.View = false;
         }
         if (insert.SubQuery != null)
         {
             ColumnImpact impact = new ColumnImpact(insert.SubQuery.ToString(), insert.dbvendor, tableColumns, strict);
             impact.ignoreTopSelect(true);
             impact.Debug             = false;
             impact.ShowUIInfo        = true;
             impact.TraceErrorMessage = false;
             impact.impactSQL();
             ColumnImpactModel columnImpactModel = impact.generateModel();
             parseSubQueryColumnDefinition(insert, insert.SubQuery, tableMetaData, columnImpactModel);
         }
     }
 }
예제 #2
0
 private void parseCreateView(TCreateViewSqlStatement createView)
 {
     if (createView.ViewName != null)
     {
         string        tableName    = createView.ViewName.TableString;
         string        tableSchema  = createView.ViewName.SchemaString;
         string        databaseName = createView.ViewName.DatabaseString;
         TableMetaData viewMetaData = new TableMetaData(vendor, strict);
         viewMetaData.Name       = tableName;
         viewMetaData.SchemaName = tableSchema;
         if (isNotEmpty(databaseName))
         {
             viewMetaData.CatalogName = databaseName;
         }
         else
         {
             viewMetaData.CatalogName = database;
         }
         viewMetaData.View = true;
         if (!tableColumns.ContainsKey(viewMetaData))
         {
             tableColumns[viewMetaData] = new List <ColumnMetaData>();
         }
         else
         {
             IList <TableMetaData> tables = new List <TableMetaData>(tableColumns.Keys);
             viewMetaData      = (TableMetaData)tables[tables.IndexOf(viewMetaData)];
             viewMetaData.View = true;
         }
         if (createView.Subquery != null)
         {
             ColumnImpact impact = new ColumnImpact(createView.Subquery.ToString(), createView.dbvendor, tableColumns, strict);
             impact.ignoreTopSelect(true);
             impact.Debug             = false;
             impact.ShowUIInfo        = true;
             impact.TraceErrorMessage = false;
             impact.impactSQL();
             ColumnImpactModel columnImpactModel = impact.generateModel();
             parseSubQueryColumnDefinition(createView, createView.Subquery, viewMetaData, columnImpactModel);
         }
     }
 }