/* v01.00: Script reseteo del usario de BBDD FHIR -Elimina el contenido poblado en las tablas del modelo FHIR del usuario -Elimina los objetos básicos de secuencia, prodecimientos, vistas y tablas del usuario FHIR Requisitos: -Se requiere ejecutar este script con permisos de administrador BBDD, "As SYSDBA" Pasos de ejecucion: -Ejecutar en linea de comando o mediante herramienta cliente SQL Resultado: -Actualización del esquema asociado por defecto al usuario sin contenido y operativo para albergar los objetos FHIR creados en el arranque del servicio. */ DECLARE -- SECCIÓN DE DECLARACIÓN DE VARIABLES iCONTADOR INTEGER:=1; iPROCESADOS INTEGER:=0; dFINI TIMESTAMP; -- Fecha inicio proceso dFFIN TIMESTAMP; -- Fecha fin proceso sTOTAL VARCHAR2(30); -- Tiempo de ejecución parcial o total BEGIN -- REGISTRAMOS LA FECHA DE COMIENZO dFINI:=systimestamp; -- INFORMAMOS EL COMIENZO DEL PROCESO DBMS_OUTPUT.PUT_LINE('Comienzo del proceso de eliminación ('||to_char(dFINI,'HH24:MI:SS')||').....'); --Sección de eliminacion de SEQUENCE del usuario iPROCESADOS:=0; DBMS_OUTPUT.PUT_LINE('Comienzo del procesamiento de eliminación de SEQUENCES: ('||to_char(dFINI,'HH24:MI:SS')||').....'); FOR s IN (SELECT sequence_name FROM all_sequences WHERE sequence_owner = 'fhir') LOOP iPROCESADOS:=iPROCESADOS+1; EXECUTE IMMEDIATE 'DROP SEQUENCE ' || 'fhir' || '.' || s.sequence_name; END LOOP; dFFIN:=sysdate; --systimestamp; DBMS_OUTPUT.PUT_LINE('Finalizacion del procesamiento de SEQUENCES: ('||to_char(dFFIN,'HH24:MI:SS')||').'); sTOTAL := to_char(dFFIN - dFINI,'HH24:MI:SS'); DBMS_OUTPUT.PUT_LINE('Tiempo de ejecución: '||sTOTAL||'.'); DBMS_OUTPUT.PUT_LINE('Numero de registros procesados: '||iPROCESADOS); DBMS_OUTPUT.PUT_LINE('________________________________________________________________________________'); --Sección de eliminacion de PROCEDURE del usuario iPROCESADOS:=0; DBMS_OUTPUT.PUT_LINE('Comienzo del procesamiento de eliminación de PROCEDURES: ('||to_char(dFINI,'HH24:MI:SS')||').....'); FOR p IN (SELECT object_name FROM all_procedures WHERE owner = 'fhir') LOOP iPROCESADOS:=iPROCESADOS+1; EXECUTE IMMEDIATE 'DROP PROCEDURE ' || 'fhir' || '.' || p.object_name; END LOOP; dFFIN:=sysdate; --systimestamp; DBMS_OUTPUT.PUT_LINE('Finalizacion del procesamiento de PROCEDURES: ('||to_char(dFFIN,'HH24:MI:SS')||').'); sTOTAL := to_char(dFFIN - dFINI,'HH24:MI:SS'); DBMS_OUTPUT.PUT_LINE('Tiempo de ejecución: '||sTOTAL||'.'); DBMS_OUTPUT.PUT_LINE('Numero de registros procesados: '||iPROCESADOS); DBMS_OUTPUT.PUT_LINE('________________________________________________________________________________'); --Sección de eliminacion de VIEWs del usuario iPROCESADOS:=0; DBMS_OUTPUT.PUT_LINE('Comienzo del procesamiento de eliminación de VIEWS: ('||to_char(dFINI,'HH24:MI:SS')||').....'); FOR v IN (SELECT view_name FROM all_views WHERE owner = 'fhir') LOOP iPROCESADOS:=iPROCESADOS+1; EXECUTE IMMEDIATE 'DROP VIEW ' || 'fhir' || '.' || v.view_name; END LOOP; dFFIN:=sysdate; --systimestamp; DBMS_OUTPUT.PUT_LINE('Finalizacion del procesamiento de VIEWS: ('||to_char(dFFIN,'HH24:MI:SS')||').'); sTOTAL := to_char(dFFIN - dFINI,'HH24:MI:SS'); DBMS_OUTPUT.PUT_LINE('Tiempo de ejecución: '||sTOTAL||'.'); DBMS_OUTPUT.PUT_LINE('Numero de registros procesados: '||iPROCESADOS); DBMS_OUTPUT.PUT_LINE('________________________________________________________________________________'); --Sección de eliminacion de TABLES del usuario iPROCESADOS:=0; DBMS_OUTPUT.PUT_LINE('Comienzo del procesamiento de eliminación de TABLES: ('||to_char(dFINI,'HH24:MI:SS')||').....'); FOR t IN (SELECT table_name FROM all_tables WHERE owner = 'fhir') LOOP iPROCESADOS:=iPROCESADOS+1; EXECUTE IMMEDIATE 'DROP TABLE ' || 'fhir' || '.' || t.table_name || ' CASCADE CONSTRAINTS'; END LOOP; dFFIN:=sysdate; --systimestamp; DBMS_OUTPUT.PUT_LINE('Finalizacion del procesamiento de TABLES: ('||to_char(dFFIN,'HH24:MI:SS')||').'); sTOTAL := to_char(dFFIN - dFINI,'HH24:MI:SS'); DBMS_OUTPUT.PUT_LINE('Tiempo de ejecución: '||sTOTAL||'.'); DBMS_OUTPUT.PUT_LINE('Numero de registros procesados: '||iPROCESADOS); DBMS_OUTPUT.PUT_LINE('________________________________________________________________________________'); dFFIN:=sysdate; --systimestamp; DBMS_OUTPUT.PUT_LINE('Finalizacion del proceso de eliminación ('||to_char(dFFIN,'HH24:MI:SS')||').'); sTOTAL := to_char(dFFIN - dFINI,'HH24:MI:SS'); DBMS_OUTPUT.PUT_LINE('Tiempo de ejecución: '||sTOTAL||'.'); DBMS_OUTPUT.PUT_LINE('________________________________________________________________________________'); EXCEPTION WHEN OTHERS THEN dFFIN:=sysdate; --systimestamp; DBMS_OUTPUT.PUT_LINE('Finalizacion del procesamiento de eliminación con error inesperado ('||to_char(dFFIN,'HH24:MI:SS')||').'); DBMS_OUTPUT.PUT_LINE('Salida1:Codigo Error: ' || sqlcode || ' - ' || sqlerrm); sTOTAL := to_char(dFFIN - dFINI,'HH24:MI:SS'); DBMS_OUTPUT.PUT_LINE('Tiempo de ejecución: '||sTOTAL||'.'); DBMS_OUTPUT.PUT_LINE('________________________________________________________________________________'); -- ******************************************** FIN ********************************************************************** -- FORMATEO FINAL END; /
Write, Run & Share PL/SQL code online using OneCompiler's Oracle PL/SQL online editor and compiler for free. It's one of the robust, feature-rich online editor and compiler for Oracle PL/SQL running on latest version 23c (23.3.0.0). Getting started with the OneCompiler's Oracle PL/SQL editor is really simple and pretty fast. The editor shows sample boilerplate code when you choose language as 'PL/SQL' and start writing code to learn and test online without worrying about tedious process of installation.
PL/SQL is procedural extension for SQL created by Oracle. It is by default embedded into the Oracle Database. PL/SQL program units are compiled and stored inside the Oracle Database which results in optimal execution times as the PL/SQL and SQL run within the same server process.
Following is the syntax structure for the PL/SQL code blocks
DECLARE
<declarations section>
BEGIN
<executable command(s)>
EXCEPTION
<exception handling>
END;
DECLARE
message varchar2(100):= 'Hello, World!';
BEGIN
dbms_output.put_line(message);
END;
/
CREATE OR REPLACE FUNCTION
hello_user
(user_name IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
RETURN 'Hello ' || user_name;
END hello_user;
/
BEGIN
dbms_output.put_line(hello_user('Peter'));
END;
/
BEGIN
DBMS_OUTPUT.put_line (1/0);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('error is: ' || SQLERRM);
END;