FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Arrarys en Firebird
Necesitaria dentro de un procedimiento almacenado en el ibexpert utilizar arrays pero no he encontrado como hacerlo. A ver si alguien puede ayudarme, lo que necesito poner exactamente es este codigo Delphi en el ibexpert:
xNumeros[0] := 'cero'; xNumeros[1] := 'uno'; xNumeros[2] := 'dos'; xNumeros[3] := 'tres'; Para despues poder acceder a ese array. GRACIAS. |
#2
|
||||
|
||||
Personalmente no conozco una forma de hacerlo, pero tampoco le veo la necesidad ya que en la base de datos tenemos tablas, nada nos impide traducir un array como el que mencionas en una tabla asi:
Cita:
Luego recuparmos los datos facilmente por medio de SQL desde el procedimiento almacenado.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#3
|
||||
|
||||
Ok, pero si el procedimiento usa varios arreglos y no tengo una tabla para almacenarlos... respondo creando una tabla para este propósito: No hay problema, pero si lo que se busca es hacer una consulta temporal de datos, la pregunta que me surge aquí es: puedo crear una tabla temporal para almacenar estos resultados de tal forma que exista únicamente mientras el procedimiento se ejecuta? Quiero hacer referencia a las famosas tablas temporales. La verdad no las he usado y no sé si se puedan usar para un fin como este.
De todas formas en la documentación de InterBase 6 se habla de arreglos. De hecho una columna en una tabla puede ser un array de un tipo de dato, excepto si ese trata de un BLOB. Los dominios también pueden ser arrays. Sin embargo en la misma documentación dice que no se puede declarar un array usando DECLARE VARIABLE dentro de un procedimiento almacenado: Cita:
Habrá cambiado esto en Firebird 2.1? (aún estoy buscando, pero no pareciera). Por otra parte leí que en Interbase 7 se extiende la API para soportar arrays <- a qué se refiere esto?
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. Última edición por mlara fecha: 11-08-2008 a las 03:36:51. |
#4
|
||||
|
||||
A partir de FB2.1 puedes declarar variables del tipo de un dominio, entonces... si puedes declarar un dominio del tipo array, podrás utilizarlo en el procedimiento almacenado... pero realmente no se me ocurre como recorrer un arreglo dentro de un SP, tal y como lo hariamos o al menos de una forma parecida a como se hace en Delphi por ejemplo...
En cuanto a las tablas temporales, bueno, a partir de FB2.1 ya puedes declarar dos tipos de tablas temporales, una es de tipo DELETE ROWS que se eliminan los datos inmediatamente terminada la transacción y otra es PRESERVE ROWS donde se eliminan los datos, una vez terminada la conexión.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#5
|
||||
|
||||
Queriendo aportar también se aprende bastante no? Hasta ahora no he trabajado con tablas temporales pero se me viene ocurriendo la idea de utilizarlas. Pronto lo sabré. Por ahora me parece interesante lo de DELETE ROWS Y PRESERVE ROWS.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
#6
|
|||
|
|||
Arreglos en FB...
Srs:
Hace algún tiempo me interesó el tema y traté de estudiarlo un poco (pero por falta de tiempo lo dejé a un lado). De lo poco que pude sacar en claro, es que los arreglos solo pueden darse de alta dentro de un campo de una tabla (ignoro si recientes versiones de Firebird los incorporen como elementos separados dentro de algún procedimiento almacenado, como creo que es el caso que el forista jlalvarez los quiere utilizar). A continuación pongo un pequeño ejemplo de como se debe de crear una tabla que contenga, a su vez, un campo que sea un arreglo de elementos del mismo tipo (claro está):
Ahora viene la parte difícil (bueno no es difícil, pero tampo es trivial el proceso). Para insertar un registro, hay que construir y poblar el arreglo antes de ejecutar el comando de inserción y se hace a través de la API. Te sugiero que leas lo siguiente documento: InterBase 6 API Guide. Por cierto, también la base de datos de Employee que viene en las instalación completa del Firebird viene un ejemplo de lo que aquí, apretadamente, trato de explicar. Espero sea de utilidad. Saludos, Gerardo Suárez Trejo P.D. Igual que Jhonny Suárez creo que la solución mas fácil es utilizar tablas . |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Firebird 1.5.4 funciona en Win Vista pero Firebird 2.0.1 NO !!! | Hagen | Firebird e Interbase | 5 | 19-05-2007 21:17:54 |
Firebird 1.5.3 Error:No puede ejecutarse Firebird Guardian xq ya hay una instancia | Delphius | Firebird e Interbase | 5 | 26-01-2007 10:19:20 |
alguien ha utilizado Firebird DDX provider? (conectarse con db en firebird!) | JuanErasmo | .NET | 1 | 04-11-2006 16:17:12 |
Firebird : Llamado para probadores de Firebird 2.0 | JOSEPE | Firebird e Interbase | 0 | 12-03-2005 20:33:18 |
Problemas Firebird Super Server 1.5 con RFunc Firebird v 1.0 | Prophoenix | Firebird e Interbase | 1 | 09-03-2004 11:40:48 |
|