خطأ في بناء الجملة العامة التي أثيرت من الاتصال عن طريق الاستعلام في إنفورميكس عند استخدام معرفات الجدول نقلت

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

سؤال

عند تشغيل الاستعلام التالي على قاعدة بيانات إنفورميكس ، قاعدة البيانات تقارير خطأ في بناء الجملة العامة (دون أي إشارة فيما يتعلق بما يسبب المشكلة).نفس الاستعلام يعمل تماما على قواعد البيانات كوبريد أو أوراكل ، وكلاهما يدعم أيضا CONNECT BY بناء الجملة:

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

قاعدة البيانات أنا باستخدام هو طبعة المطور من إنفورميكس 12.10 على ويندوز.أنا تشغيل الاستعلام من برنامج تشغيل جدبك مع رابط الاتصال التالي (للسماح لمعرفات الجدول نقلت):

jdbc:informix-sqli://localhost:9092/test:INFORMIXSERVER=ol_informix;DELIMIDENT=y
هل كانت مفيدة؟

المحلول

القضية الدقيقة هنا هي حقيقة أن prior لا يقبل معرفات الجدول المقتبسة ، على الرغم من أن معرفات الأعمدة المقتبسة تبدو جيدة.يعمل هذا الاستعلام بشكل جيد:

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

...مع الفرق يجري:

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

-- Good:
connect by nocycle prior t_directory."id" = "t_directory"."parent_id"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top