Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Emular la pantalla Input Parameters del SQL Editor de IbExpert (https://www.clubdelphi.com/foros/showthread.php?t=86431)

electrobardo 07-08-2014 12:14:36

Emular la pantalla Input Parameters del SQL Editor de IbExpert
 
Buenas,

Tenemos una aplicación con un repositorio de Querys editables en runtime y programables, dependiendo de un servicio. Ahora salta la necesidad de ejecutar estos SQL en tiempo real, pero deben pedir datos (suele ser fechas o importes). Averiguar los parámetros es fácil, pero no encontramos la manera de saber el tipo y la longitud (del campo al que referencia ni hablamos!). Que es posible está claro, ya que el IbExpert lo hace en la pantalla Input Parameters (incluso si haces un SELECT de un PROCEDURE en Ib). He probado con parsers, como gaParser..., pero sin documentación está complicado... ¿alguien tiene alguna idea?

Saludos

Neftali [Germán.Estévez] 07-08-2014 14:08:15

A partir de las tablas de sistema de Interbase/Firebird puedes conocer a partir del nombre del campo y la tabla a la que pertenece toda la información. En concreto el tipo y el tamaño del campo (si aplica).

Por ejemplo una consulta como esta te devolverá información sobre el campo1 de la tabla1

Código SQL [-]
SELECT  r.RDB$RELATION_NAME as table_name, 
        r.RDB$FIELD_NAME AS field_name,
        r.RDB$DEFAULT_VALUE AS field_default_value,
        f.RDB$FIELD_LENGTH AS field_length,
        f.RDB$FIELD_TYPE  AS field_type
FROM RDB$RELATION_FIELDS r
   LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME 
where r.RDB$FIELD_NAME='campo1' and r.RDB$RELATION_NAME='Tabla1'

Segun lo que te devuelva el tipo (entero):

-->261 = 'BLOB'
-->14 = 'CHAR'
-->40 = 'CSTRING'
-->11 = 'D_FLOAT'
-->27 = 'DOUBLE'
-->10 = 'FLOAT'
-->16 = 'INT64'
-->8 = 'INTEGER'
-->9 = 'QUAD'
-->7 = 'SMALLINT'
-->12 = 'DATE'
-->13 = 'TIME'
-->35 = 'TIMESTAMP'
-->37 = 'VARCHAR'


La franja horaria es GMT +2. Ahora son las 12:34:02.

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