Buenas:
Estoy creando un procedimiento almacenado que inserta un registro en una tabla (T_ALMACEN).
La tabla se compone de los siguientes campos:
ID_ALM NUMBER(3,0) NOT NULL PK--->IDENTIFICADOR
TIPO_VIA VARCHAR2(2) IN ('CL','AV',RU','CA') NOT NULL
VIA VARCHAR2(25)-->NOMBRE DE VÍA
NUM NUMBER(3,0) NOT NULL
COD_POS NUMBER(5,0) -->CÓDIGO POSTAL
OPER VARCHAR2(1) NOT NULL IN ('S','N')-->INDICADOR DE OPERATIVIDAD
NOMBRE VARCHAR2(25) NOT NULL-->NOMBRE DEL ALMACEN
Mi procedimiento hace una comprobación de los parámetros de entrada (los valores de los campos del registro que ingreso), el que me da problemas es el TIPO_VIA que aunque entre algunos de los valores permitidos, me salta una excepción controlada pero creo que no debería.
El bloque de este código es:
if p_tipo_insert is not null then
dbms_output.put_line('tipo de via no es nulo');
if p_via_insert != 'CL' and p_via_insert != 'AV' and p_via_insert != 'RU' and p_via_insert != 'CA' then
dbms_output.put_line('tipo via no válido');
raise v_data_exception;
end if;
end if;
........
exception
when v_data_exception then
dbms_output.put_line('Imposible insertar, incoherencia en datos de entrada.');
when others then
dbms_output.put_line('Imposible insertar, problema sin determinar.');
Y me salta la traza de incoherencia de datos ?¿?¿?¿?¿
La cosa es que insertando directamente no tengo problemas pero a través del proc SIEMPRE me da el mismo error.
Ej:
BEGIN
pr_insert_almacen (756,'CL','PELOTAS',34,47583,'S','CASAS');
END;
RESULTADO:
id: 756
tipo via: CL
via: PELOTAS
num via: 34
cod postal: 47583
operativo: S
nombre: CASAS
id no es nulo
tipo de via no es nulo
tipo via no válido
Imposible insertar, incoherencia en datos de entrada.
Alguien sabría decirme lo que ocurre?
Gracias a todos