Oracle 関数を HSQLDB に移行するとき、HSQLDB の「選択先」を変換する必要があります。Oracle スクリプトは次のようになります。
CREATE FUNCTION getId()
RETURN NUMBER IS
temp_id NUMBER;
...
BEGIN
....
SELECT id id INTO temp_id from ( select id form ..... );
HSQLDB 2.0.0 では、次のことができます。
CREATE FUNCTION getId()
RETURNS BIGINT
BEGIN ATOMIC
DECLARE temp_id BIGINT;
....
SET temp_id = SELECT id id FROM ....
ただし、HSQLDB 2.2.9 では機能しなくなりました。エラーメッセージは次のとおりです。
[作成 - 0 行、0.000 秒] [エラー コード: -5608、SQL 状態: 42608] 宣言のデータ影響句が間違っているか欠落しています: ステートメントの READS SQL
HSQLDB 2.2 のリリース ノートによると、「select into」は既にサポートされているとのことですが、方法がわかりませんでした。
HSQLDB 2.2.9でそれを行う方法を知っている人はいますか?