خطأ في بناء الجملة العامة التي أثيرت من الاتصال عن طريق الاستعلام في إنفورميكس عند استخدام معرفات الجدول نقلت
-
21-12-2019 - |
سؤال
عند تشغيل الاستعلام التالي على قاعدة بيانات إنفورميكس ، قاعدة البيانات تقارير خطأ في بناء الجملة العامة (دون أي إشارة فيما يتعلق بما يسبب المشكلة).نفس الاستعلام يعمل تماما على قواعد البيانات كوبريد أو أوراكل ، وكلاهما يدعم أيضا 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"
لا تنتمي إلى StackOverflow