Documentos de Académico
Documentos de Profesional
Documentos de Cultura
WOLFGANG VARGAS
Creamos el procedimiento llamado creaPaises el cual contendrá dos tablas: una llamada PAISES_P
con la información correspondiente a los nombres de los paises y otra llamada tabla
PROVEEDORES_2 con un Id correspondiente a cada pais.
Inicialmente declaramos todos los elementos contenedores de información necesarios dentro del
procedimiento; una variable tipo tabla con un campo pais para recoger los nombres de los paises y
una variable tipo entero que se usará para verificar si la tabla PAISES_P se encuentra ya creada.
Adicionalmenre, se declararon dos arrays uno llamado array_idPais para almacenar los id de los
paises y otro array_pais para los nombres de los paises, así como dos variables CONT1, CONT2 de
tipo entero para ser usados en el ciclo for requerido posteriormente en el procedimiento.
Asimismo, declaramos una excepción personalizada con el código 10001 y la tabla dummy que
mostrará el mensaje correspondiente a esta excepción creada.
A continuación cargamos dentro de la variable tipo tabla llamada T_NOMBRE_PAIS, los nombres de
de los paises no repetidos a través de la sentencia select distinct y esta variable la traslamos al array
llamado ARRAY_PAIS, para a través del numero de registros de este array crear un ID_PAIS del tipo
secuencial mediante un ciclo FOR.
Luego, de tener creados y cargados los dos ARRAYS (ARRAY_PAIS Y ARRAY_IDPAIS), procedemos a
trasladar esta información dentro de las tablas PAISES_P Y PROVEEDORES_2, con la condición de
que si algún campo dentro del ARRAY_PAIS se encuentra NULO o VACIO, devolvemos las inserciones
hechas hasta el momento con la sentencia transaccional ROLLBACK y que se active la excepción
mostrando en pantalla un mensaje de que el campo pais se encuentra vacio, asi como procediendo
al borrado de las tablas ya creadas.
CODIGO DEL PROCEDIMIENTO
create procedure creaPaises()
as
begin
select count(*) into t_verificacion from "SYS"."RS_TABLES_" where schema = 'SYSTEM' AND
NAME='PAISES_P';
if :t_verificacion = 0 then
-- creación de la tabla paises
create table paises_p (pais nvarchar(50));
Se ejecutó el procedimiento.
Y la tabla PROVEEDORES_2:
Ahora extresando el procedimiento para probar si salta la excepción insertamos un campo vació
en la tabla proveedores: