Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Oracle - Procedimientos Almacenados

Estas en el tema de Oracle - Procedimientos Almacenados en el foro de Bases de Datos General en Foros del Web. Hola a todos, Necesito aprender a utilizar procedimientos almacenados en Oracle 9i, y la verdad soy muy novato en el tema, por favor alguien me ...
  #1 (permalink)  
Antiguo 07/06/2005, 02:16
 
Fecha de Ingreso: febrero-2005
Mensajes: 98
Antigüedad: 19 años, 3 meses
Puntos: 0
Oracle - Procedimientos Almacenados

Hola a todos,

Necesito aprender a utilizar procedimientos almacenados en Oracle 9i, y la verdad soy muy novato en el tema, por favor alguien me podría explicar cómo se crean (sintaxis) y como se ejecutan (sintaxis), si me podrían brindar algunos ejemplos (más rápido para mí entenderlo), o alguna buena página dónde me puedan explicar detalladamente, gracias a todos anticipadamente.
  #2 (permalink)  
Antiguo 07/06/2005, 10:56
 
Fecha de Ingreso: febrero-2005
Mensajes: 98
Antigüedad: 19 años, 3 meses
Puntos: 0
alguna idea?
  #3 (permalink)  
Antiguo 07/06/2005, 13:26
 
Fecha de Ingreso: abril-2005
Mensajes: 19
Antigüedad: 19 años
Puntos: 0
Ejemplo de como crear uno.

Código:
CREATE OR REPLACE PROCEDURE RESERV."SP_INS_PARCIALES" (
 pPerEscCve in  Parciales.PerEscCve%type,
 pParcial_Id in Parciales.Parcial_Id%type,
 pParcial_Inicio in Parciales.Parcial_Inicio%type,
 pParcial_Fin in Parciales.Parcial_Fin%type
)
as
begin
  insert into reserv.Parciales(PerEscCve,Parcial_Id,Parcial_Inicio,Parcial_Fin)
  values (pPerEscCve,pParcial_Id,pParcial_Inicio,pParcial_Fin);
  commit;
exception
when others then
  raise_application_error(-20001, reserv.error_messages(SQLCODE));
end sp_ins_parciales;
  #4 (permalink)  
Antiguo 07/06/2005, 13:31
 
Fecha de Ingreso: abril-2005
Mensajes: 19
Antigüedad: 19 años
Puntos: 0
Y así ejecutas (desde otro procedure)

Código:
CREATE OR REPLACE PROCEDURE RESERV."SP_INS_RESERV" (
 pParcial_Id in Reservaciones.Parcial_Id%type,
 pCatAluMat in Reservaciones.CatAluMat%type,
 pArea_Id in Reservaciones.Area_Id%type,
 pReser_Fecha in reservaciones.reser_fecha%type,
 pEquipo_Id in Reservaciones.Equipo_Id%type
)
as
periodo_escolar       reservaciones.peresccve%type;
folio                 reservaciones.reser_folio%type;
Excede_dia            exception;
Reservaciones_dia     parcial_nivel.ParNiv_MaxDia%type;
Parcial               Reservaciones.Parcial_Id%type;
begin
/* calcula periodo escolar actual*/
  periodo_Escolar:=reserv.f_periodo_esc('');
/*verifica si el equipo ya esta reservado por otro alumno*/
  reserv.sp_valida_equipo(periodo_escolar,pParcial_id,pArea_id,pReser_Fecha,pEquipo_id,folio);
  /*verifica si ya tiene hora reservada en otra area*/
 reserv.sp_valida_areas(periodo_escolar,pParcial_id,pCatAluMat,to_date(pReser_Fecha,'dd-mm-yyyy HH24:MI'),folio);


 parcial := f_parcial(to_date(pReser_Fecha,'dd-mm-yyyy HH24:MI'),Periodo_escolar);
 /* verifica cuantas reservaciones tiene por dia */
 /* Reservaciones_dia := f_cuenta_reser_dia(Periodo_Escolar,pCatAluMat,to_Date(pReser_Fecha,'dd-mm-yyyy HH24:MI'));*
/*  if reservaciones_dia >= 1 then*/
/*      raise excede_dia;
  end if;*/

  insert into reserv.Reservaciones(peresccve,Parcial_Id,CatAluMat,Area_Id,
  Reser_Fecha,Equipo_Id,StatusRes_Id,Reser_Creacion,Reser_Impresion,
  Reser_Mail,Reser_Folio,reser_entrada,reser_salida,reser_tiempo,
  reser_fuera,reser_entsal)
  values (periodo_escolar,Parcial,pCatAluMat,pArea_Id, pReser_Fecha,
  pEquipo_Id, 1,current_date,'N','N',reservacion_Folio.nextval,null,null,null,
  null,'N');
   commit;
exception
when excede_dia then
    raise_application_error(-20001, reserv.warning_messages(-20012));
/*when others then*/
/*  raise_application_error(-20001, reserv.error_messages(SQLCODE));*/
end sp_ins_reserv;

Espero que sirva. Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:26.