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)
-   -   Saber en que numero va un generador ? (https://www.clubdelphi.com/foros/showthread.php?t=60966)

hecospina 20-10-2008 22:46:14

Saber en que numero va un generador ?
 
Hola Amigos del Foro
Uso FireBird 2.0

Necesito saber mediante una consulta sql el numero en el que va cada uno de los generadores de la base de datos.

Al realizar la consulta
Código SQL [-]
select * from rdb$generators
me aparece el nombre y el id mas no en que numero va

tambien he probado con el sql
Código SQL [-]
Select gen_id (nombre_generador,0) from rdb$system
pero solo me devuelve el numero en le que va el generador especifico

Hay alguna tabla del sistema RDB$ que tenga esta informacion
o que sql puede hacer

Gracias

BlueSteel 20-10-2008 23:21:25

Hola

Revisa este hilo, si bien no es lo mismo tratan algo similar

Salu2:p:D

Lepe 21-10-2008 06:26:45

al menos con las 2 instrucciones que tienes se puede construir un SP que devuelva una consulta (por ejemplo) con 2 columnas, nombre del generador y valor actual.

Código SQL [-]
SP de seleccion:
parámetros de salida del SP:
nombre varchar(40)
valor bigint /* depende de la versión y dialecto */
as

for select NombreDecampoDelGenerador from rbd$generator into :nombre do
begin
   Select gen_id (:nombre,0) from rdb$system into :valor;
   suspend;
end;

Saludos

eduarcol 21-10-2008 14:17:38

a mi por lo general me funciona esto:

Código SQL [-]
Select gen_id (nombre_generador,0) from rdb$Database

hecospina 21-10-2008 17:02:53

Gracias por sus respuestas

La solucion que me da Lepe de crear un procedimiento almacenado la debo desechar pues la persona que diseño la base de datos no permite que se visualicen los scrip de dichos procedimientos y cuando voy a compilar uno nuevo me lanza un error

Eduarcol tiene razon al decir que este select funciona correctamente, solo que debo hacer una consulta por cada generador

Yo esperaba que en alguna de las tablas del sistema apareciera el registros de estos datos

boreg 23-10-2008 00:39:48

Execute Block
 
Saludos a todos, haciendo algunas modificaciones al codigo del SP sugerido por Lepe y utilizando un Execute Block obtendrás lo que buscas:


Código SQL [-]
EXECUTE BLOCK returns(
  GENERADOR VARCHAR(40),
  VALOR BIGINT)
AS
BEGIN
  for EXECUTE STATEMENT 'select rdb$generator_name from rdb$generators'
      into :GENERADOR
      do
      begin
       EXECUTE STATEMENT 'Select gen_id ('||:GENERADOR||',0) from rdb$database'
       into :valor;
       suspend;
      end
END

yo tengo Firebird 2.0.4 dialecto 3 y me funcionó a la perfección, espero que atí tambien :).

hecospina 23-10-2008 22:55:10

Hola Boreg

Al ejecutar el scrip me sale un error, pero es lo de menos, te agradezco la respuesta no sabia de Execute Block, voy a leer mas sobre el tema pero creo que con esto ya soluciono mi inquietud

Gracias


La franja horaria es GMT +2. Ahora son las 17:13:03.

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