0
對不起,模糊的標題,這是我的問題。我已經存儲DB2的過程,我嘗試爲MySQL進行轉換。我想知道是否可以將光標聲明中的SELECT語句作爲字符串變量來編寫。例如與DB2我有這樣的:MySQL存儲過程:遊標聲明
(...)
-- Declare cursors
DECLARE c_very_init CURSOR WITH RETURN FOR s_very_init;
DECLARE c_date CURSOR WITH RETURN FOR s_date;
DECLARE CONTINUE HANDLER FOR not_found
SET at_end = 1;
-- In case the_date is 0, retrieve the first date
IF the_date = 0 THEN
SET sql_end_date = '
SELECT DATE
FROM ACCOUNTS
WHERE REF = ''' || the_ref || '''
ORDER BY ID ASC FETCH FIRST 1 ROWS ONLY';
PREPARE s_date FROM sql_end_date;
OPEN c_date;
FETCH FROM c_date INTO data_ins;
SET the_last_date = data_ins;
CLOSE c_date;
ELSE
SET the_last_date = the_date;
END IF;
-- Get the 'very' initial value
SET sql_very_init = '
SELECT in, out
FROM MOVEMENTS
WHERE REF = ''' || the_ref || '''
AND DATE < ' || the_last_date;
PREPARE s_very_init FROM sql_very_init;
OPEN c_very_init;
FETCH FROM c_very_init INTO dare, avere;
-- Loop through the results
(...)
我宣佈一個c_very_init
光標,但在SP遊標聲明的時候,我還是不知道完整的select語句,因爲我需要獲取(如果有必要)值爲the_last_date
。看來我不能做到這一點:
DECLARE c_very_init CURSOR WITH RETURN FOR s_very_init;
與MySQL,語法是直接在聲明中聲明:
DECLARE c_very_init CURSOR FOR SELECT blaablaa...;
我錯了?
謝謝。 fabien。
謝謝您的回答Devart,並沒有真正幫助我與我的問題雖然。我用更完整的SP編輯了我的問題,希望能更好地解釋我的問題。再次感謝你! – fabien 2011-04-26 10:35:09