Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 09-12-2009
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 378
Poder: 24
lbuelvas Va por buen camino
Hola foro,

Adjunto codigo fuente y datos de prueba para la tarea que solicitas

Código SQL [-]
SET SQL DIALECT 3;

CREATE TABLE DATOS (
    ID      INTEGER NOT NULL,
    FECHA   DATE NOT NULL,
    NUMERO  INTEGER NOT NULL,
    VALOR   INTEGER
);

ALTER TABLE DATOS ADD CONSTRAINT PK_DATOS PRIMARY KEY (ID);

INSERT INTO DATOS (ID, FECHA, NUMERO, VALOR) VALUES (1, '12-01-2009', 5000, NULL);
INSERT INTO DATOS (ID, FECHA, NUMERO, VALOR) VALUES (2, '12-01-2009', 4999, NULL);
INSERT INTO DATOS (ID, FECHA, NUMERO, VALOR) VALUES (3, '11-30-2009', 4998, NULL);
INSERT INTO DATOS (ID, FECHA, NUMERO, VALOR) VALUES (4, '11-30-2009', 5001, NULL);
INSERT INTO DATOS (ID, FECHA, NUMERO, VALOR) VALUES (5, '12-02-2009', 5002, NULL);
INSERT INTO DATOS (ID, FECHA, NUMERO, VALOR) VALUES (6, '12-02-2009', 4997, NULL);

SET TERM ^ ;

create or alter procedure SP_RE_NUMERAR (
    CONSECUTIVO integer)
as
declare variable ID integer;
begin
  -- Procedimiento para llenar el campo 'datos.valor' con un consecutivo de
  -- forma que al consultar la tabla 'datos' ordenado por el campo 'datos.valor'
  -- los registros se vean ordenados por los campos 'datos.fecha' y
  -- 'datos.numero'.

  if (consecutivo is null) then
    consecutivo = 1;

  for select datos.id
      from datos
      order by datos.fecha,  datos.numero
      into :id
  do begin
    update datos
    set    datos.valor = :consecutivo
    where  datos.id = :id;
    consecutivo = consecutivo + 1;
  end
end^

SET TERM ; ^

GRANT SELECT,UPDATE ON DATOS TO PROCEDURE SP_RE_NUMERAR;

GRANT EXECUTE ON PROCEDURE SP_RE_NUMERAR TO SYSDBA;

Para ejecutar el procedimiento por SQL es asi:

Código SQL [-]
execute procedure sp_re_numerar (1000);
__________________
Luis Fernando Buelvas T.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda de como Insertar registro con procedimiento almacenado y campo autoincremento El_Chava Firebird e Interbase 5 25-11-2008 06:57:42
Procedimiento almacenado efelix MS SQL Server 7 21-11-2007 17:53:00
Procedimiento Almacenado rodrigo19 Oracle 5 22-08-2007 22:55:40
Procedimiento Almacenado Ulises Providers 3 30-01-2004 18:14:58
procedimiento almacenado haron Firebird e Interbase 2 29-09-2003 01:09:56


La franja horaria es GMT +2. Ahora son las 19:28:20.


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
Copyright 1996-2007 Club Delphi