/// <summary>
 /// Создание или пересоздание представления на основе указанной таблицы
 /// </summary>
 /// <param name="table">Таблица, на основе которой создается представление</param>
 public virtual void CreateOrReplaceView(DBTable table)
 {
     string view = FormatView(table);
     string script = new OracleTemplater(this, table).CreateViewCommand();
     // Проверка изменений
     bool skip = false;
     if ((updateOptions & UpdateSchemaOptions.CheckSafeContent) == UpdateSchemaOptions.CheckSafeContent)
         skip = CompareSafeContent(script, GetViewText(table), false);
     // Выполнение скрипта
     if (!skip)
         ExecuteSqlSchemaUpdate("View", view, table.Name, script);
 }
 /// <summary>
 /// Создание или пересоздание пакета процедур на основе указанной таблицы
 /// </summary>
 /// <param name="table">Таблица, на основе которой создается пакет процедур</param>
 public virtual void CreateOrReplacePackage(DBTable table)
 {
     string package = FormatPackage(table);
     string script = new OracleTemplater(this, table).CreateStandartPackageCommand(package,
         col => GetSqlProcedureParameterType(table, col));
     // Проверка изменений
     bool skip = false;
     if ((updateOptions & UpdateSchemaOptions.CheckSafeContent) == UpdateSchemaOptions.CheckSafeContent)
     {
         string body = null;
         foreach (string command in ParseScript(script))
             if (command != null && command.ToUpper().Contains("PACKAGE BODY")) { body = command; break; }
         skip = CompareSafeContent(body, GetPackageBody(table), true);
     }
     // Выполнение скрипта
     if (!skip)
     {
         if (scriptMode)
             ExecuteSqlSchemaUpdate("Package", package, table.Name, script);
         else
             foreach (string command in ParseScript(script))
                 ExecuteSqlSchemaUpdate("Package and procedures", package, table.Name, command);
     }
 }