3

当使用以下查询运行测试时,HSQLDB 将表别名误认为是模式。

SELECT c.country_ml2country as CTRY_PK, c.name as CTRY_NAME,
l.name as LANGUAGE_NAME, l.code as LANGUAGE_CODE
FROM country_ml as c, language as l
WHERE c.language(+) = l.id and c.country_ml2country(+) = ?
ORDER BY l.name ASC;

有谁之前经历过这个吗?如果“是”,那么解决方法是什么?

请注意,如果我更改FROM country_ml as cFROM country_ml as bob,则错误消息会相应更改为invalid schema name: BOB

4

1 回答 1

6

问题是非标准的 Oracle 风格的 OUTER JOIN 语法,它是 Oracle 特有的,其他 SQL 方言不支持。

WHERE c.language(+) = l.id and c.country_ml2country(+) = ?

您应该改用 Oracle 也支持的以下标准语法:

SELECT c.country_ml2country as CTRY_PK, c.name as CTRY_NAME,
l.name as LANGUAGE_NAME, l.code as LANGUAGE_CODE
FROM country_ml as c RIGHT OUTER JOIN language as l
ON c.language = l.id and c.country_ml2country = ?
ORDER BY l.name ASC
于 2011-04-14T07:31:05.483 回答