Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Longitud máxima para una consulta SQL (https://www.clubdelphi.com/foros/showthread.php?t=13382)

moesis 17-08-2004 14:18:58

Longitud máxima para una consulta SQL
 
Saludos,

¿Alguien sabe si existe limitación de longitud en el método TSQLQuery.SQL.Add para cargar una consulta?

La consulta en cuestión es la siguiente, por si alguien se le ocurre alguna optimización.... ;)

Código SQL [-]
  
 SELECT 
  fases.id_fase, 
  colegiados.n_colegiado, 
  colegiados.nombre + ' ' + colegiados.apellidos AS aparejador 
 FROM 
  fases, 
  fases_colegiados, 
  colegiados 
 WHERE 
  fases_colegiados.id_col = colegiados.id_colegiado AND 
  fases.id_fase = fases_colegiados.id_fase AND 
  colegiados.sexo <> 'S' and 
  fases.id_fase In (SELECT 
         fases.id_fase 
       FROM 
         fases, 
         tipos_via, 
         poblaciones 
       WHERE 
         fases.tipo_via_emplazamiento = tipos_via.cod_tipo_via AND 
         fases.poblacion = poblaciones.cod_pob AND 
         fases.modalidad = 'T' AND 
         fases.fase In ('01','02','04','05') AND 
         fases.f_abono >= '20040812') 
UNION 
 SELECT 
  fases.id_fase, 
  colegiados.n_colegiado, 
  colegiados.nombre + ' ' + colegiados.apellidos AS Aparejador 
 FROM 
  fases, 
  colegiados, 
  fases_colegiados_asociados 
 WHERE 
  fases.id_fase = fases_colegiados_asociados.id_fase and 
  colegiados.id_colegiado = fases_colegiados_asociados.id_col_per and 
  fases_colegiados_asociados.id_fases_colegiados in ( 
       SELECT 
        fases_colegiados.id_fases_colegiados 
       FROM 
        fases, 
        fases_colegiados, 
        colegiados 
       WHERE 
        fases_colegiados.id_col = colegiados.id_colegiado AND 
        fases.id_fase = fases_colegiados.id_fase AND 
        colegiados.sexo = 'S' AND 
        fases.id_fase IN (SELECT 
               fases.id_fase 
               FROM 
               fases, 
               tipos_via, 
               poblaciones 
               WHERE 
               fases.tipo_via_emplazamiento = tipos_via.cod_tipo_via AND 
               fases.poblacion = poblaciones.cod_pob AND 
               fases.modalidad = 'T' AND 
               fases.fase In ('01','02','04','05') AND 
               fases.f_abono >= '20040812'));

Gracias y un saludo.

jachguate 17-08-2004 17:36:13

Tenes algún problema con la longitud de esta consulta?
¿en tiempo de ejecución?
¿en tiempo de diseño?

:confused:

Si de presumir se trata, diré que he realizado algunas consultas con el triple de longitud, y hasta la fecha no he tenido ningún problema.. :D

moesis 17-08-2004 23:38:05

Si, jachguate
El problema lo tengo en tiempo de ejecución, y es que el componente TSQLQuery me corta la consulta, con el consecuente resultado de error pues está incompleta. :mad:

A ver si le hecho un vistazo a los fuentes de la VCL para ver si hay limitaciones.

Saludos

jachguate 17-08-2004 23:54:43

No conozco el componente TSQLQuery, pero si se basa en TStrings, la longitud debe ser de 65536 caracteres (contando los cr/lf, claro).

Salvo que el motor al que te conectas tenga otra limitante... no veo por donde val el problema.. quizas ayude ver un fragmento de código de la asignación y saber como has comprobado que la consulta se corta.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 22:24:15.

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