hsqldb 是不是支持 oracle 兼容模式下的表别名
Posted
技术标签:
【中文标题】hsqldb 是不是支持 oracle 兼容模式下的表别名【英文标题】:Does hsqldb support table alias in oracle compatible modehsqldb 是否支持 oracle 兼容模式下的表别名 【发布时间】:2013-03-19 15:21:10 【问题描述】:我们在 dao 测试中使用 hsqdb-2.2.9。 hsqldb 通过设置SET DATABASE SQL SYNTAX ORA TRUE;
与oracle(生产中)兼容,我们使用ibatis sql map。
当 sql 包含表别名时,它会失败,例如 select a.name, b.code form t_a a, t_b b where a.id = b.a_id
,它会报告 unexpected token a
。我们尝试在表和表别名之间添加“as”,它也不起作用。我错过了什么吗?
【问题讨论】:
form
应该是 from
【参考方案1】:
是的,HSQLDB 支持表别名。
如果您使用您报告的确切查询,您会得到:
unexpected token: T_A
如果您按照 a_horse_with_no_name 的注释更正查询,它应该可以工作。如果其中一张表不存在,您会得到:
user lacks privilege or object not found: T_A
顺便说一句,尝试使用最新的 2.3.0 快照 jar 以获得更好的 Oracle 兼容性测试。您可以从网站的支持页面找到它。
【讨论】:
感谢您的回复,我更正了sql并得到'用户缺少权限或找不到对象:'但是表确实存在,还有其他可能吗? @fredt【参考方案2】:呃……我想我已经找到了问题…………我自己的。我突然想到我使用'do'(表名是t_delivery_order)作为表别名,它恰好是hsqldb(或sql)中的关键字。只需将 'do' 替换为 'd',它是固定的。谢谢大家
【讨论】:
以上是关于hsqldb 是不是支持 oracle 兼容模式下的表别名的主要内容,如果未能解决你的问题,请参考以下文章
Derby 或 HSQLDB 是不是支持跨模式连接的 Sybase 语法?