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