Skip to content
Snippets Groups Projects
Commit 678094a4 authored by Steven Murray's avatar Steven Murray
Browse files

Replaced PL/SQL with straight SQL

parent b245282e
No related branches found
No related tags found
No related merge requests found
WHENEVER SQLERROR EXIT 1
SET SERVEROUTPUT ON
SET FEEDBACK OFF
VARIABLE plSqlReturnValue NUMBER
DECLARE
SchemaIsLockedException EXCEPTION;
TYPE NameList IS TABLE OF VARCHAR2(30);
tables NameList := NameList(
'CTA_CATALOGUE',
'ARCHIVE_ROUTE',
'TAPE_FILE',
'ARCHIVE_FILE',
'TAPE',
'REQUESTER_MOUNT_RULE',
'REQUESTER_GROUP_MOUNT_RULE',
'ADMIN_USER',
'ADMIN_HOST',
'STORAGE_CLASS',
'TAPE_POOL',
'LOGICAL_LIBRARY',
'MOUNT_POLICY');
sequences NameList := NameList(
'ARCHIVE_FILE_ID_SEQ');
PROCEDURE dropTableIfExists(tableName IN VARCHAR2) IS
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE ' || tableNAme;
DBMS_OUTPUT.PUT_LINE('Table ' || tableName || ' dropped');
EXCEPTION
WHEN OTHERS THEN
-- ORA-00942: table or view does not exist
IF SQLCODE = -942 THEN
DBMS_OUTPUT.PUT_LINE('Table ' || tableName || ' not dropped because it does not exist');
ELSE
RAISE;
END IF;
END;
PROCEDURE dropSequenceIfExists(sequenceName IN VARCHAR2) IS
BEGIN
EXECUTE IMMEDIATE 'DROP SEQUENCE ' || sequenceName;
DBMS_OUTPUT.PUT_LINE('Sequence ' || sequenceName || ' dropped');
EXCEPTION
WHEN OTHERS THEN
-- ORA-02289: sequence does not exist
IF SQLCODE = -2289 THEN
DBMS_OUTPUT.PUT_LINE('Sequence ' || sequenceName || ' not dropped because it does not exist');
ELSE
RAISE;
END IF;
END;
FUNCTION catalogueSchemaIsLocked RETURN BOOLEAN IS
TYPE StatusList IS TABLE OF VARCHAR2(100);
schemaLocked INTEGER;
schemaStatus VARCHAR2(100);
BEGIN
EXECUTE IMMEDIATE 'SELECT SCHEMA_STATUS FROM CTA_CATALOGUE' INTO schemaStatus;
RETURN 'LOCKED' = schemaStatus;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Catalogue schema considered LOCKED because CTA_CATALOGUE table is corrupted');
DBMS_OUTPUT.PUT_LINE('CTA_CATALOGUE table is empty when it should contain one row');
RETURN TRUE;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('SQLCODE=' || SQLCODE);
-- ORA-00942: table or view does not exis
IF SQLCODE = -942 THEN
DBMS_OUTPUT.PUT_LINE('Catalogue schema considered UNLOCKED because the CTA_CATALOGUE table does not exist');
RETURN FALSE;
-- ORA-01422: exact fetch returns more than requested number of rows
ELSIF SQLCODE = -1422 THEN
DBMS_OUTPUT.PUT_LINE('Catalogue schema considered LOCKED because CTA_CATALOGUE table is corrupted');
DBMS_OUTPUT.PUT_LINE('CTA_CATALOGUE table contains more than one row when it should contain one');
RETURN TRUE;
ELSE
RAISE;
END IF;
END;
BEGIN
-- Non-zero means failure
:plSqlReturnValue := 1;
IF catalogueSchemaIsLocked() THEN
DBMS_OUTPUT.PUT_LINE('Aborting drop of catalogue schema objects: Schema is LOCKED');
DBMS_OUTPUT.PUT_LINE('See the following command-line tools for more details:');
DBMS_OUTPUT.PUT_LINE('cta-catalogue-schema-lock');
DBMS_OUTPUT.PUT_LINE('cta-catalogue-schema-status');
DBMS_OUTPUT.PUT_LINE('cta-catalogue-schema-unlock');
ELSE
FOR i IN 1 .. tables.COUNT LOOP
dropTableIfExists(tables(i));
END LOOP;
FOR i IN 1 .. sequences.COUNT LOOP
dropSequenceIfExists(sequences(i));
END LOOP;
-- Zero means success
:plSqlReturnValue := 0;
END IF;
END;
/
EXIT :plSqlReturnValue
DROP TABLE CTA_CATALOGUE;
DROP TABLE ARCHIVE_ROUTE;
DROP TABLE TAPE_FILE;
DROP TABLE ARCHIVE_FILE;
DROP TABLE TAPE;
DROP TABLE REQUESTER_MOUNT_RULE;
DROP TABLE REQUESTER_GROUP_MOUNT_RULE;
DROP TABLE ADMIN_USER;
DROP TABLE ADMIN_HOST;
DROP TABLE STORAGE_CLASS;
DROP TABLE TAPE_POOL;
DROP TABLE LOGICAL_LIBRARY;
DROP TABLE MOUNT_POLICY;
DROP SEQUENCE ARCHIVE_FILE_ID_SEQ;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment