1 FUNCTION version_script
2 RETURN VARCHAR2 IS
3
4 p_null char(1);
5 p_version VARCHAR2(30);
6 p_prv_version VARCHAR2(30);
7 server_version VARCHAR2(30);
8
9 BEGIN
10
11 -- For 12.1, direct uppgrades are supported from
12 -- 10.2.0.5, 11.1.0.7, and 11.2.0.2 and above.
13
14 SELECT version INTO p_version FROM registry$ where cid='CATPROC';
15 IF substr(p_version,1,8) = '10.2.0.5' THEN
16 RETURN '1002000';
17 ELSIF substr(p_version,1,8) = '11.1.0.7' THEN
18 RETURN '1101000';
19 ELSIF substr(p_version,1,6) = '11.2.0' AND
20 substr(p_version,1,8) != '11.2.0.1' THEN
21 RETURN '1102000';
22 ELSIF substr(p_version,1,6) = '12.1.0' THEN -- current version
23 SELECT version INTO server_version FROM v$instance;
24 IF substr(p_version,1,8) != substr(server_version,1,8) THEN --- run c1201000
25 RETURN '1201000';
26 ELSE
27 -- version is the same as instance, so rerun the previous upgrade
28 -- rerun upgrade of previous release
29 EXECUTE IMMEDIATE
30 'SELECT prv_version FROM registry$ where cid=''CATPROC'''
31 INTO p_prv_version;
32
33 IF substr(p_prv_version,1,8) = '10.2.0.5' THEN
34 RETURN '1002000';
35 ELSIF substr(p_prv_version,1,8) = '11.1.0.7' THEN
36 RETURN '1101000';
37 ELSIF substr(p_prv_version,1,6) = '11.2.0' AND
38 substr(p_prv_version,1,8) != '11.2.0.1' THEN
39 RETURN '1102000';
40 ELSIF substr(p_prv_version,1,6) = '12.1.0' OR
41 p_prv_version IS NULL THEN -- new database
42 RETURN '1201000';
43 ELSE
44 RAISE_APPLICATION_ERROR(-20000,
45 'Upgrade re-run not supported from version ' || p_prv_version );
46 END IF;
47 END IF;
48 END IF;
49
50 RAISE_APPLICATION_ERROR(-20000,
51 'Upgrade not supported from version ' || p_version );
52
53 END version_script;