Ver Mensaje Individual
  #5  
Antiguo 30-04-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 24
guillotmarc Va por buen camino
Hola.

codigo_suscriptor no es la clave primaria de esa tabla, ¿ verdad ?. Tienes que utilizar la clave primaria para identificar cada uno de los registros a actualizar. Sino ocurre lo que te está pasando ahora, que en cada pasada del bucle actualizas todos los registros afectados (y claro, al final solo queda el valor puesto en la última pasada).

Es decir, supongamos que la clave primaria se llama simplemente ID_FACTURA. Entonces tu procedimiento almacenado queda :

Código:
SET TERM ^ ;
CREATE PROCEDURE RELLENAR 
AS
DECLARE VARIABLE ID_FACTURA;
DECLARE VARIABLE I INTEGER;
begin
  i=1;
  for select ID_FACTURA
      from facturacion
      where codigo_suscriptor='2580'
      into :ID_FACTURA
  do
  begin
    i=i+1;
    update facturacion
    set nr=:i
    where ID_FACTURA = :ID_FACTURA;
  end
  suspend;
end^
SET TERM ; ^
GRANT SELECT,UPDATE ON FACTURACION TO PROCEDURE RELLENAR;
GRANT EXECUTE ON PROCEDURE RELLENAR TO SYSDBA;
NOTA: He puesto en negrita los cambios que tienes que hacer (claro que en lugar de ID_FACTURA tienes que usar el nombre de tu campo de clave primaria).
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 30-04-2010 a las 19:06:56.
Responder Con Cita