Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Incrementar Store Procedure Firebird (https://www.clubdelphi.com/foros/showthread.php?t=64960)

sierraja 11-11-2009 21:23:26

Incrementar Store Procedure Firebird
 
Saludos a todos.

Tengo delphi 7, firebird 1.5 de que manera se puede hacer un store procedure que me actualice una tabla, donde un campo es un ID y que se va incrementando despues que la tabla esta llena. Es decir:

tengo la tabla con la suiguiente data:

Código:

RUTA  NOMBRE 
nulo    Pedro
nulo    Juan
nulo    Cesar
nulo    Andres

Ahora necesito generarle la ruta de la siguiente manera:

Código:

RUTA  NOMBRE 
1        Pedro
2        Juan
3        Cesar
4        Andres

Es decir, despues que la data esta en la tabla, generar la ruta incrementandose pero en un store procedure en firebird. Gracias por su atencion...;)

cloayza 12-11-2009 14:49:18

Podria ser algo asi:

Este asigna un id correlativo a todos los registros.
Código SQL [-]
CREATE PROCEDURE spSETID ()
    
AS                                                   
DECLARE VARIABLE id integer;
DECLARE VARIABLE nombre varchar(50); --No se el tamano...?
begin   
       id=0;                                       
       for select NOMBRE
            from TABLA
            into :nombre
       do
       begin
              id=id+1;
              update TABLA
              set ruta=:id
              where NOMBRE=:nombre;
       end
end

Espero te sirva de algo...

RONPABLO 13-11-2009 16:08:37

Con el siguiente query puedes hacer lo que buscas.
Código SQL [-]
update TABALA set RUTA=(
select coalesce(max(p.RUTA),0) + 1 from TABLA p)

sierraja 16-11-2009 15:10:44

Buenos dias he hecho las pruebas con las dos opciones y la opcion de cloayza la hace mucho mas rapido. Pero mi pregunta es: como quedaria si no tuviese que introducir el nombre sino que agarre todos los registro de la tabla. (Perdon no entiendo la sintanxi que dice :nombre en el select)

cloayza 16-11-2009 15:30:32

Código SQL [-]
 
--Traduccion: Seleccione el campo NOMBRE desde la tabla TABLA y asignelo a :Nombre
for select NOMBRE        
            from TABLA
            into :nombre 
       do
       begin
 --Traduccion: Actualize la tabla TABLA, asigne el valor de :id al campo Ruta, cuando el campo NOMBRE sea igual al valor asignado a :nombre.
       id=id+1;
       UPDATE TABLA 
       SET Ruta=:id   
       WHERE NOMBRE=:nombre;  
       end

Espero te aclare la duda...Un abrazo :D

sierraja 16-11-2009 16:23:23

Caso Resuelto
 
Excelente, efectiva la solucion. Gracias por el apoyo. Cuidence.....;)


La franja horaria es GMT +2. Ahora son las 04:44:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi