2011-04-14 13 views
3

次のクエリでテストを実行すると、HSQLDBは​​スキーマとしてテーブルエイリアスを間違えます。DbUnit HSQLDB - 無効なスキーマ名:C

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に応じて変更されます。

答えて

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 
+0

はどうもありがとうございましたを! –

+0

私はこれ以上の投票をしたいと思います。これは私に多くの時間を節約しました! – Beez

関連する問題