前幾天遇到一個mysql游標不到數據問題,這個問題困擾了我兩天,現在終于解決了,下面小編就來為大家分享一下。
這是建表語句,插入兩行數據?
drop?table如果存在testinfo; 創(chuàng)建表testinfo ( name?varchar(10)not?null, 年齡int ); truncate?table?testinfo; 插入testinfo()值('你',15); 插入testinfo()值('me',20);
mysql的表數據?
mysql>?select?name,age?from?testinfo;? +?------?+?------?+? |?名稱|?年齡|? +?------?+?------?+? |?你|?15?|? |?我|?20?|? +?------?+?------?+? 這是使用游標的存儲過程? drop?procedure?if?exists?test_proc; 分隔符// 創(chuàng)建過程test_proc() 開始 DECLARE?done?int?default?false; DECLARE一個char(10); DECLARE?b?int; DECLARE?cur1游標用于選擇名稱,age?from?testinfo; DECLARE繼續(xù)處理SQLSTATE'02000'set?done?=?true; 打開cur1; read_loop:loop ????????FETCh?cur1進入a,b; ????????如果這樣做了 ????????????????離開read_loop ????????萬一; ????????選擇@?a,@?b; ????????插入testinfo值(@?a,@?b); 端環(huán); 關閉cur1; 結束 // 分隔符 調用test_proc();
執(zhí)行結果如下?
mysql>?。/opt/mysql/test_proc.sql? 查詢行,受影響的0行,1個警告(0.00秒)? 查詢行,受影響(0.02秒)0行? +?------?+?------?+? |?@a?|?@b?|? +?------?+?------?+? |?NULL?|?NULL?|? +?------?+?------?+? 1行集(0.00秒)
上面是有錯誤的:1048(23000):列’名稱’不能為空?
不知道錯在哪里,為什么取
不到數據??兩天了,現在終于知道了。應該這么改,l如下:
插入testinfo值(@ a,@ b);改成插入testinfo值(a,b);就好了?
聲明了變量a,b,然后通過游標給他賦值,但是并沒有給@ a,@ b賦值..
所以遇到問題要仔細看看就容易解決的。
【相關推薦】
1.?mysql
2.?mysql
3.?mysql
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END