![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
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] |
|
#2
|
|||
|
|||
|
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 |
|
#3
|
||||
|
||||
|
un generator se puede crear asi:
le podes asignarle un valor directo: incrementar o decrementar su contenido tomar el valor:
__________________
[Crandel] |
|
#4
|
|||
|
|||
|
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. |
|
#5
|
||||
|
||||
|
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: 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] |
|
#6
|
|||
|
|||
|
Oki doki, Muchas Gracias por tu ayuda....
con esto todo queda Ok. |
|
#7
|
|||
|
|||
|
Hola...
Solo una aclaración: No sé en qué situación se va a ejecutar tu programa (nº de accesos concurrentes, declaracion explicita de transacciones, etc...) pero debes tener en cuenta que los Generators se han usado tradicionalmente para mantener contadores en rutinas multiusuarios: Puedes usar un SELECT MAX(Codigo) para sacar el valor máximo de una tabla y coger el siguiente para dar de alta tu registro, pero si hay otro usuario realizando la misma operación en la misma transacción vas a obtener un bonito mensaje de Clave Duplicada. Para evitar esto están los Generators (bien usandos, como todo). ¿Por qué te suelto este rollo? Porque si hay dos usuarios que lanzan simultáneamente el procedimiento almacenado que dices, se van a ir cambiando el uno al otro el valor de dicho Generator, dando errores incomprensibles en la fase de implantación, que es donde más duele la cabeza y el ego. Ignora este comentario si estás haciendo un programa monousuario. Saludos. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|