Club Delphi  
    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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-09-2005
Abel Garcia Abel Garcia is offline
Miembro
 
Registrado: nov 2004
Posts: 45
Poder: 0
Abel Garcia Va por buen camino
Unhappy Variables Globales

Hola, Estoy utilizando FireBird 1.5 y me gustaria saber si
Es posible Crear un variable de tipo global. En otras palabras
una variable que pueda contener un valor el cual pueda ser modificado o almacenado en distinos procedimientos ?

Ejemplo:
Tengo un Procedimiento al cual deseo que reciva como parametro una variable
esta variable la quiero almacenar en esta variable de tipo Global,
el cual a su vez cuando el un triger por ejemplo el de update de una tabla se ejecute se pueda leer el valor de la variable Global y asi tomar un desicion en el procedimiento Update.

Es posible hacer esto ?

Gracias por su ayuda...
Responder Con Cita
  #2  
Antiguo 18-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Podes hacerlo con un generador, si la varibale que queres almacenar es un entero.

O podes crear una tabla con varibles de configuración y almacenarla ahi.

Que es lo que queres realizar exactamente, por ahi se puede solucionar de otra forma, como con new y old?
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 18-09-2005
Abel Garcia Abel Garcia is offline
Miembro
 
Registrado: nov 2004
Posts: 45
Poder: 0
Abel Garcia Va por buen camino
Gracias Crandel
Como podria lograrlo utilizando Un Generador, de echo si es una variable entera la que deseo guardar, esta es solo para poder bifurcar en el codigo de el Update de la tabla.
Gracias
Responder Con Cita
  #4  
Antiguo 18-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
un generator se puede crear asi:
Código SQL [-]
create generator VAR_GLOBAL;
le podes asignarle un valor directo:
Código SQL [-]
// DDL
set generator VAR_GLOBAL to valor;
// DML
VAL = GEN_ID (VAR_GLOBAL, valor - GEN_ID (VAR_GLOBAL,0));
incrementar o decrementar su contenido
Código SQL [-]
VAL = gen_id(VAR_GLOBAL, 1);
// o
VAL = gen_id(VAR_GLOBAL, -1);
tomar el valor:
Código SQL [-]
VAL = gen_id(VAR_GLOBAL, 0);
__________________
[Crandel]
Responder Con Cita
  #5  
Antiguo 18-09-2005
Abel Garcia Abel Garcia is offline
Miembro
 
Registrado: nov 2004
Posts: 45
Poder: 0
Abel Garcia Va por buen camino
Otra vez muchas gracias Crandel

Solo me queda un duda mas :

en mi procedimiento como puedo ejecutar esta sentensia:

// DDL
set generator VAR_GLOBAL to valor;

es un procedimiento de Firebird 1.5 y me manda error de compilacion cuando intento
insertarla en el codigo del procedimiento ?

O como podria ejecutarla desde mi procedimiento , por ejemplo en el procedimiento de Update de la tabla para resetear el Generador.
Responder Con Cita
  #6  
Antiguo 18-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Justamente no se puede porque es DDL (Data Definition Language) o Lenguaje
de Definición de Datos. Solo se puede usar cuando uno lo esta definiendo.

por eso te puese una segunda opción DML (Data Manipulation Language), que puedes ejecutar dentro de tu procedimiento, donde VAL es una variable definida dentro del procedimiento, puede ser el valor de return o definida asi:
Código SQL [-]
DECLARE VARIABLE VAL INTEGER;
y valor es el valor que le queres asignar.

Dado que no hay una forma directa de modificar un generador hago uso de una función interna gen_id.

En resumen lo que hace esta forma es sumarle el valor que queres menos el valor que tenia = valor que queres
__________________
[Crandel]
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 02:54:36.


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