/*
* Автор: Галкин А.И.
* Дата: 2013-05-30
* Описание: Добавление таблицы версий базы
*/

/*
  ****** Инструкции для SQLPlus (обязательно) ******
  Для печати сообщений:
  DBMS_OUTPUT.put_line('<Message>');
*/
whenever sqlerror exit 1;
set serveroutput on;
set echo off;

declare
	tblExists number := 0;
	filename  varchar2(256) := 'sfm.database-update.2013-00-00.Init.sql';
	purpose   varchar2(4000) := 'Добавление таблицы версий базы';
begin
	--execute immediate 'drop table DB_Update_History';

	select count(*)
		into tblExists
		from ALL_TABLES
	 where lower(table_name) = lower('DB_Update_History');

	if (tblExists = 0) then
		execute immediate 'create table KFM.DB_Update_History (
												 SCRIPT_NAME varchar2(256) primary key
												 , PURPOSE varchar2(4000) not null
												 , EXECUTE_DATE date default sysdate not null
									)';
		execute immediate 'comment on table KFM.DB_Update_History is ''Таблица для отслеживания версии базы данных''';
		execute immediate 'comment on column KFM.DB_Update_History.SCRIPT_NAME is ''Названия скрипта''';
		execute immediate 'comment on column KFM.DB_Update_History.EXECUTE_DATE is ''Дата и время исполнения скрипта''';
		execute immediate 'comment on column KFM.DB_Update_History.PURPOSE is ''Коментарий''';
	
		execute immediate 'create or replace public synonym DB_Update_History for KFM.DB_Update_History';
		execute immediate 'grant all on DB_Update_History to KFM_ROLE';
	
		execute immediate 'begin insert into KFM.DB_Update_History
			(script_name, purpose)
		values
			(:filename, :purpose); commit; end;'
			using in filename, in purpose;
	end if;
end;
/

