![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
|
Incrementar Campo
Este procedimiento es aplicado para generar en un campo NR un valor incremental. Pero lo resultados son que siempre ve guarda en el campo el ultimo numero que consulta. Es decir hay 93 registros con ese filtro y almacena 93 en el campo NR pero para todos los registro, cuando deberia ser su incremento desde el 1 hasta el 93 en forma sucesiva. Les dejo el sp para que lo corrigan. Gracias por su atencion.
|
|
#2
|
||||
|
||||
|
Código:
select codigo_suscriptor
from facturacion
where codigo_suscriptor='2580'
into :x_codigo_do
o sea, el bucle posterior no hace nada porque sólo hay uno, el 2580.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#3
|
||||
|
||||
|
Gracias por tu tiempo. No vemos de nuevo
![]() Es decir, el filtro lo aplico en el where del update ? o como deberia ir ? |
|
#4
|
||||
|
||||
|
Debería de ir, depende de lo que quieras hacer
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#5
|
||||
|
||||
|
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;
__________________
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. |
|
#6
|
||||
|
||||
|
Buenos dias,
Efectivamente el codigo_suscriptor no es la clave primaria, la tabla tampoco tiene clave primaria. La idea es que el campo que vamos incrementar sucesivamente en forma ascendente es ID_FACTURA el no existe y lo vamos a crear, hay que tener en cuenta que el codigo_suscriptor se repite varias veces y necesito identificarlo en la tabla con un numero que no se repita para nadie, por eso pense en un campo autoincrementable. Gracias por tu tiempo ![]() |
|
#7
|
||||
|
||||
Hago una correccion. El campo que necesito incrementar es nr (numero de registro asi lo llamo) ese vendria a ser la clave primaria pero necesitamos crearla ya despues de creada la tabla. Nuevamente gracias por su valioso tiempo.![]() |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Incrementar Un Registro | einarcito | SQL | 3 | 21-10-2008 14:13:02 |
| Incrementar campo según el valor de otro | subzero | Firebird e Interbase | 3 | 06-08-2008 21:41:52 |
| Incrementar en 1 un campo númerico | efelix | Conexión con bases de datos | 5 | 03-12-2007 19:36:54 |
| Incrementar numeros en un campo desde delphi | dariana20 | SQL | 6 | 25-05-2006 22:40:46 |
| Incrementar un campo numerio | edwin1 | OOP | 1 | 11-08-2003 21:32:01 |
|