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

Hola,scooby:

el código completo es:

create or replace procedure pr_insert_almacen
(p_id_insert in number,
p_tipo_insert in varchar2,
p_via_insert in varchar2,
p_num_insert in number,
p_cod_post_insert in number,
p_oper_insert in varchar2,
p_nombre_insert in varchar2) as
v_data_exception exception;
begin
/*comprobación de los datos entrados*/
dbms_output.put_line('id: ' || to_char(p_id_insert));
dbms_output.put_line('tipo via: ' || p_tipo_insert);
dbms_output.put_line('via: ' || p_via_insert);
dbms_output.put_line('num via: ' || p_num_insert);
dbms_output.put_line('cod postal: ' || to_char(p_cod_post_insert));
dbms_output.put_line('operativo: ' || p_oper_insert);
dbms_output.put_line('nombre: ' || p_nombre_insert);
/*comprobación de integridad de parámetros*/
if p_id_insert is null then
dbms_output.put_line('Error: identificador es nullo');
raise v_data_exception;
end if;
if p_id_insert is not null then
dbms_output.put_line('id no es nulo');
end if;
if p_tipo_insert is null then
dbms_output.put_line('Error: tipo de via es nullo');
raise v_data_exception;
end if;
/*---*/
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;
if p_tipo_insert is null then
dbms_output.put_line('tipo de via es nulo');
raise v_data_exception;
end if;
/*---*/
if p_via_insert is null then
dbms_output.put_line('Error: via es nulo');
end if;
if p_via_insert is not null then
dbms_output.put_line('Error: via no es nulo');
end if;
/*--*/
if p_num_insert is null then
raise v_data_exception;
end if;
if p_num_insert is not null then
dbms_output.put_line('numero no es nulo');
raise v_data_exception;
end if;
/*--*/
if p_oper_insert is null then
dbms_output.put_line('Error: indicador operativo es nulo');
raise v_data_exception;
end if;
if p_oper_insert is not null then
dbms_output.put_line('indicador operativo no es nulo');
if p_oper_insert != 's' and p_oper_insert != 'n' then
dbms_output.put_line('Error: indicador operativo ni s ni n');
raise v_data_exception;
end if;
if p_oper_insert = 'S' or p_oper_insert = 'N' then
dbms_output.put_line('indicador oper ok');
end if;
end if;
/*--*/
if p_nombre_insert is null then
dbms_output.put_line('Error: nombre es nulo');
raise v_data_exception;
end if;
if p_nombre_insert is not null then
dbms_output.put_line('nombre no es nulo');
end if;
/*si todo ok inserción en tabla*/
insert into t_almacen values (p_id_insert, p_tipo_insert, p_via_insert, p_num_insert, p_cod_post_insert, p_oper_insert, p_nombre_insert);
commit;
dbms_output.put_line('Inserción de almacen correcta.');
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.');
end;

Espero que esto te ayude más.

Un saludo