Ver Mensaje Individual
  #1  
Antiguo 16-07-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Reputación: 22
sitrico Va por buen camino
Question Verificar si un registro existe al insertarlo desde un procedimiento

Tengo el siguiente procedimiento

Código SQL [-]
SET TERM ^ ;

CREATE PROCEDURE COPIARRUBROSXGRUPO (
    grupoorigen smallint,
    grupodestino smallint)
as
declare variable elcodrubro varchar(10);
declare variable elrubro varchar(50);
declare variable elidtiporubro smallint;
declare variable elidrubro integer;
declare variable elperiodo smallint;
declare variable elmonto numeric(18,5);
begin
-- copiar los rubros y montos de un grupo a otro
  For select codrubro, rubro, idtiporubro, periodo, monto
  from montoderubros -- montoderubroa es una vista que agrupa todos los archivos requeridos
  Where idgruporub = :grupoorigen
  into :elcodrubro, :elrubro, :elidtiporubro, :elperiodo, :elmonto do
     begin
     -- Validar si ya el rubro existe si no hay que crearlo
     Select IdRubro FROM rubros
     Where CodRubro = :elcodrubro And rubro = :elrubro And
           idgruporub = :grupodestino And idtiporubro = :elidtiporubro
     into :elidrubro;
     if (elidrubro is null) then
        Begin
        -- generar el nuevo ID
        elidrubro = gen_id(gen_rubros_id,1);
        Insert into rubros
           (idrubro, codrubro, rubro, idgruporub, idtiporubro) values
           (:elidrubro, :elcodrubro, :elrubro, :grupodestino, :elidtiporubro);
        End
     -- copiar los montos por periodo
     Insert Into montosrubros
        (idrubro, periodo, monto) values
        (:elidrubro, :elperiodo, :elmonto);
     End
end^

SET TERM ; ^

El procedimiento debe copiar los rubros y montos (2 tablas) desde un idgruporub a otro (ver parametros de entrada), antes de la validación funcionaba bien para 1 sólo periodo, para más de uno da error: clave duplicada en el archivo de rubros al copiar el segundo periodo)

encontré este post con el mismo caso pero no me sirve

alguna ayuda??

Gracias
__________________
Sitrico
Responder Con Cita