Error de sintaxis general generado desde la consulta CONNECT BY en Informix cuando se utilizan identificadores de tabla entre comillas

StackOverflow https://stackoverflow.com//questions/25036439

Pregunta

Al ejecutar la siguiente consulta en una base de datos Informix, la base de datos informa un error de sintaxis general (sin ninguna indicación con respecto a la causa del problema).La misma consulta se ejecuta perfectamente en las bases de datos CUBRID u Oracle, las cuales también admiten la CONNECT BY sintaxis:

select 
  lower(connect_by_root "t_directory"."name"), 
  connect_by_isleaf, 
  connect_by_iscycle, 
  substr(
    sys_connect_by_path(lower("t_directory"."name"), '/'), 
    2) "dir"
from "t_directory"
start with "t_directory"."parent_id" is null
connect by nocycle prior "t_directory"."id" = "t_directory"."parent_id"
order siblings by lower("t_directory"."name") asc

La base de datos que estoy usando es una edición para desarrolladores de Informix 12.10 en Windows.Estoy ejecutando la consulta desde un controlador JDBC con la siguiente URL de conexión (para permitir identificadores de tabla entre comillas):

jdbc:informix-sqli://localhost:9092/test:INFORMIXSERVER=ol_informix;DELIMIDENT=y
¿Fue útil?

Solución

El problema exacto aquí es el hecho de que prior no acepta identificadores de tabla cotizados, aunque los identificadores de columna cotizados parecen estar bien.Esta consulta se ejecuta perfectamente bien:

select 
  lower(connect_by_root "t_directory"."name"), 
  connect_by_isleaf, 
  connect_by_iscycle, 
  substr(
    sys_connect_by_path(lower("t_directory"."name"), '/'), 
    2) "dir"
from "t_directory"
start with "t_directory"."parent_id" is null
connect by nocycle prior t_directory."id" = "t_directory"."parent_id"
order siblings by lower("t_directory"."name") asc

... con la diferencia siendo:

-- Bad:
connect by nocycle prior "t_directory"."id" = "t_directory"."parent_id"

-- Good:
connect by nocycle prior t_directory."id" = "t_directory"."parent_id"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top