Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/05/2011, 03:15
joseigvillanueva
 
Fecha de Ingreso: abril-2011
Mensajes: 7
Antigüedad: 13 años, 6 meses
Puntos: 0
problemas proc almacenado

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