使用HSQL 2.2.5我需要不寒而慄在存儲過程中每次處理一行,所以我認爲「Iterated FOR」語句可能對我有用。不幸的是,我似乎無法使其工作。它應該看起來像這樣:HSQL迭代FOR語句不工作
FOR SELECT somestuff FROM sometable DO 一些隨機SQL語句 END FOR;
這留下了一些語法,但現在已經足夠接近了。
問題似乎是循環內部的語句從不執行。我已經驗證了我的SELECT語句確實返回了一些內容。
讓我們來具體一點。當我執行這個存儲過程:
CREATE PROCEDURE b()
MODIFIES SQL DATA
BEGIN ATOMIC
DECLARE count_var INTEGER;
SET count_var = 0;
WHILE count_var < 10 DO
INSERT INTO TTP2 VALUES(count_var);
SET count_var = count_var + 1;
END WHILE;
END;
我到9獲得插入到表TTP2 10行,具有值0(TTP2具有定義類型INTEGER的,只是一列。)
但是,當我替代WHILE的FOR語句如下:
CREATE PROCEDURE c()
MODIFIES SQL DATA
BEGIN ATOMIC
DECLARE count_var INTEGER;
SET count_var = 0;
FOR SELECT id FROM ttp_by_session FETCH 10 ROWS ONLY DO
INSERT INTO TTP2 VALUES(count_var);
SET count_var = count_var + 1;
END FOR;
END;
我什麼也沒有插入到TTP2中。 (我已經驗證了SELECT語句返回10行,一列整數。)
當我離開FETCH子句關閉時,仍然沒有結果。 ttp_by_session是一個視圖,但同樣的事情發生在一個裸表上。
我在做什麼錯?
感謝您的幫助。
謝謝弗雷德。我會給你一個鏡頭,讓你知道它是如何工作的。 –
我下載了2.2.9(想要一個穩定版本)。它像廣告一樣工作。 :-)謝謝@fredt! –