我的代碼是:遊標無法通過mysql存儲過程中的準備語句執行?
CREATE DEFINER=`root`@`windows7test-pc` PROCEDURE `new_procedure`()
BEGIN
declare str varchar(4000);
set str='declare cur cursor for select *from student';
set @st=str;
prepare stmt from @st;
execute stmt;
DEALLOCATE PREPARE stmt;
open cur;//error 1324:undefined cursor...... why?
END
爲什麼cursur未申報這裏請及時通知我,我的問題
可能因爲動態SQL在另一個上下文中,並且在它結束後,所有對象都不在範圍內。 – lad2025
這個問題是一個** XY問題**的例子。 http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem/66378#66378 OP已經提出了幾個類似的問題,關於在MySQL存儲過程中有條件地/動態地聲明遊標。 OP沒有透露的是*爲什麼他需要這樣做。 OP尚未確定他正試圖解決的*實際問題*。 (問題OP詢問「爲什麼不能在準備好的語句中聲明遊標」在MySQL參考手冊中得到了回答。) – spencer7593
OP說「通知我我的問題」。這個問題中代碼的問題(以及OP提出的類似問題中的代碼)是,它不可能*動態聲明遊標。 MySQL參考手冊記錄了用於聲明遊標的語法,以及對語法出現位置的限制。 – spencer7593