FCLT#73224 Betere bescherming tegen upgrade/recreate draaien tegen verkeerde databaseversie

svn path=/Database/trunk/; revision=56401
This commit is contained in:
Jos Groot Lipman
2022-06-27 15:21:18 +00:00
parent a25f6b3bd8
commit be9f74ea05
2 changed files with 67 additions and 0 deletions

View File

@@ -39,6 +39,42 @@ SET DEFINE ON
column fcltlogfile new_value fcltlogfile NOPRINT;
select 'RECRE'||_DBV_STRING || '_' || UPPER(USER || '_' || sys_context('USERENV', 'SERVICE_NAME') || '_' || sys_context('USERENV', 'SERVER_HOST')) || '_' || to_char(sysdate,'YYYYMMDD_HH24MISS') || '.lst' as fcltlogfile from dual;
spool &fcltlogfile
column 1 new_value 1 noprint
select '' "1" from dual where rownum = 0;
define forceit = &1 "donot"
WHENEVER SQLERROR EXIT;
DECLARE
tekst VARCHAR2 (1000);
fac_schema fac_version.fac_version_schema%TYPE;
BEGIN
SELECT fac_version_schema
INTO fac_schema
FROM fac_version;
IF SUBSTR(fac_schema, 1, 2) <> SUBSTR(_DBV_STRING, 1, 2) AND '&forceit' != 'FORCE' THEN
tekst := '=================================================================' || CHR(10)
|| 'This recreate can only be applied to a DB'|| SUBSTR(_DBV_STRING, 1, 2) || ' database' || CHR(10)
|| 'Current database is version DB'|| fac_schema || CHR(10)
|| 'Add parameter FORCE when calling this script to force the recreate' || CHR(10)
|| 'This recreate script is now cancelled!' || CHR(10)
|| '=================================================================' || CHR(10);
RAISE_APPLICATION_ERROR(-20000, 'OR'||'A-' || CHR(10) || tekst);
END IF;
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE <> -20000 THEN
RAISE_APPLICATION_ERROR(-20000, 'Could not find table FAC_VERSION. Not a Facilitor database?');
ELSE
RAISE;
END IF;
END;
/
WHENEVER SQLERROR CONTINUE;
SELECT 'The current version of Facilitor@' || USER || ' is: DB' || fac_schema
FROM DUAL;
SET DEFINE OFF
SELECT adm.systeminfo FROM DUAL;