InterBase 2020 Update 6含2个以上UNION ALL的视图执行失败求解决方案
问题解决:InterBase 2020 多UNION ALL视图查询报错
在InterBase 2020(含Update 6)中,创建包含2个及以上UNION ALL的视图后执行查询,会触发arithmetic exception, numeric overflow, or string truncation错误,且系统表RDB$VIEW_RELATIONS仅记录最后一个关联表,单UNION ALL视图无此问题。
临时解决方案
1. 嵌套UNION ALL语句
将多段UNION ALL拆分为嵌套结构,避免直接在顶层使用2个以上UNION ALL。示例修改后的视图创建语句:
CREATE VIEW VIEW2 (AUTO1, CUST1) AS SELECT AUTO1, CUST1 FROM ( SELECT T1.AUTO1 ,T1.NAME1 AS CUST1 FROM TESTTABLE1 T1 UNION ALL SELECT T2.AUTO1 ,T2.NAME1 AS CUST1 FROM TESTTABLE1 T2 ) AS SUB_VIEW UNION ALL SELECT T3.AUTO1 ,T3.NAME1 AS CUST1 FROM TESTTABLE1 T3;
这种方式可绕过InterBase 2020对多UNION ALL视图的解析bug,查询视图时能正常返回结果。
2. 升级至InterBase更高版本
该问题在InterBase 2022及后续版本中已被官方修复,若条件允许,升级到最新稳定版可彻底解决此问题。
补充说明
此问题属于InterBase 2020版本的特定解析逻辑缺陷,与数据库创建参数、32/64位版本无关,嵌套UNION ALL是无需升级前提下最有效的临时规避方案。
内容的提问来源于stack exchange,提问作者awakanto
相关产品推荐
相关产品推荐

