Bievenido

Bienvenido al Blog de Herman Aguilar!!!

Dedicado a compartir material para los alumnos de UJAT-DAIS

lunes, 13 de marzo de 2017

Ejemplo de procedimiento ABC

create or replace PROCEDURE LINEAS_ABC 
(
  P_OP IN NUMBER 
, P_VALIDO OUT NUMBER 
, P_ERROR OUT VARCHAR2 
, P_LINEA_ID IN OUT NUMBER 
, P_NOMBRE IN OUT VARCHAR2 
) AS 
BEGIN
--LIMPIANDO Y validando
  p_nombre:= upper(trim(p_nombre));

  if P_OP=1 then
  
     p_linea_id:= sec_lineas.nextval;
  
     insert into lineas(linea_id,nombre)values
           (p_linea_id,p_nombre);
  end if;
  
   if P_OP=2 then--ACTUALIZANDO
        update lineas set  nombre=p_nombre where linea_id=p_linea_id;
  end if;
  
  if P_OP=3 then--BORRANDO
       delete from lineas  where linea_id=p_linea_id;
  end if;
  
  p_valido:=1;
  
  exception
  
  when others then
    p_valido:=0;
    p_error :='Ocurrió un error '||sqlcode||' '||sqlerrm;
    
  
END LINEAS_ABC;


Los cambios fueron:
1. Todos los parámetros correspondientes a la tabla deben ser de tipo out.
2. Después del begin se agrego la sección de limpieza y validación, un ejemplo de validación:
   if p_precio <0 then
      p_valido:=0;
      p_error:='Precio no válido';
      return;
  end if;
3. Se modificó el update para no cambiar la llave primaria, todos los demás campos si pueden cambiar.
4. En el insert se agrego el uso de una secuencia, en este ejemplo sec_lineas, hay que crear una secuencia por cada tabla.
5.  Se agregó la sección Exception para el manejo de excepciones o errores.