/// <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); } }