/*
* Автор: Борисов Д.Г.
* Дата: 2014-08-28
* Задача: http://jira.softage.ru/jira/browse/SDFO-350
* Назначение: Вторая версия регистрационного сообщения
* Изменяются объекты:
*/

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

declare
	filename      varchar2(256) := 'sfm.database-update.2014-08-28.NewVersionRegistrationMessage.sql';
	purpose       varchar2(4000) := 'Вторая версия регистрационного сообщения';
	script_exists number := 0;
begin

	--delete from DB_Update_History where script_name = filename;	commit;
	select count(*)
		into script_exists
		from DB_Update_History
	 where script_name = filename;

	if (script_exists > 0) then
		RAISE_APPLICATION_ERROR(-20001, '"' || filename || '" уже присутствует в базе');
	else
		insert into DB_Update_History
			(script_name, purpose)
		values
			(filename, purpose);
	end if;

	insert into MESSAGES_VERSIONS(MESS_TYPE, VERSIONCODE, BEGINDATE, ENDDATE, VERSIONID, MESSXMLSCHEMA, OUTERXML, SHORTNAME, STATE)
	select MESS_TYPE, '7B5D93C5-A810-40F8-9991-70802422E273', SYSDATE() BEGINDATE, ENDDATE, 2, MESSXMLSCHEMA, OUTERXML, SHORTNAME, STATE
	  from MESSAGES_VERSIONS
	 where VERSIONCODE = 'C5ACEF29-0D1D-4B2B-A11F-58BC2C45BD54';

	commit;

exception
	when others then
		rollback;
		raise;
end;

/

	update MESSAGES_VERSIONS
	set VERSIONID = 1
	where VERSIONID is null;

	commit;

	alter table MESSAGES_VERSIONS add (TMP_VERSIONID integer null);

	update MESSAGES_VERSIONS
	set TMP_VERSIONID = VERSIONID;

	update MESSAGES_VERSIONS
	set VERSIONID = NULL;

	commit;

	alter table MESSAGES_VERSIONS modify (VERSIONID integer);

	update MESSAGES_VERSIONS
	set VERSIONID = TMP_VERSIONID;

	commit;

	alter table MESSAGES_VERSIONS modify (VERSIONID integer not null);

	alter table MESSAGES_VERSIONS drop column TMP_VERSIONID;

	alter table MESSAGES_VERSIONS modify (VERSIONCODE VARCHAR2(100 CHAR));
	alter table MESSAGES_VERSIONS modify (SHORTNAME VARCHAR2(100 CHAR));
	/*
	****** Begin update script ******
	*/
		-- Не транзакционный апдейт
		-- Необходимы свои транзакции, если требуются
	/*
	****** End update script ******
	*/

/*
  ****** Инструкции для SQLPlus (обязательно) ******
*/
