mysql光标不见了_mysql创建光标失败
展開全部
創(chuàng)建62616964757a686964616fe4b893e5b19e31333365636562存儲過程和觸發(fā)器
1、建表
首先先建兩張表(users表和number表),具體設計如下圖:
2、存儲過程
新建一個函數(shù),用來往users表中插入數(shù)據(jù),創(chuàng)建過程如下:
新建函數(shù)—(過程)完成--然后插入代碼及名字。
保存以后單擊運行,可以看到users表中的數(shù)據(jù)如下:
整個存儲過程的編寫就完成了,當然這只是一個極為簡單的例子,僅供入門參考。
3、觸發(fā)器
在寫觸發(fā)器之前,我們先把users的數(shù)據(jù)清空
truncate table users;
現(xiàn)在我們有兩個表,我要做的事情就是,當我往users中插入數(shù)據(jù)后,number中也相應變化:
例如,number表中有一條初始數(shù)據(jù),id=1,num=0;
當我往users中插入一條數(shù)據(jù)后,就觸發(fā)number表中的num字段就加1,也就是記錄用戶數(shù)。
下面我們來實現(xiàn)這個小小的功能。
右擊users表,選擇設計表,再選擇觸發(fā)器選項,在定義處寫入代碼:
begin
update number
set num = (select count(*) from users) ;
end
觸發(fā)器圖示:
保存后,再往users表中添加新數(shù)據(jù),再查看一下number中的數(shù)據(jù),你會神奇的發(fā)現(xiàn),number表中的數(shù)據(jù)也變了,自己動手試一下吧!
ps:存儲過程需要程序員自己去執(zhí)行,觸發(fā)器,顧名思義,自動觸發(fā)。
4、游標使用
首先我將users表中的數(shù)據(jù)清空(當然不清空也可以),然后再往里面填充數(shù)據(jù),如下圖所示:
我現(xiàn)在想做的是將student_ID字段都加上100,通過這個例子簡單展示一下游標的使用。
創(chuàng)建一個存儲過程,創(chuàng)建方式參考上面步驟。存儲過程代碼如下:
BEGIN
#Routine body goes here...
declare tmp bigint default 0;
declare cur CURSOR FOR SELECT student_ID FROM users;??--?定義游標
declare CONTINUE HANDLER FOR SQLSTATE '02000' set tmp = 0;
OPEN cur;??--?打開游標
FETCH cur INTO tmp;??--?游標向下走一步
WHILE(tmp != 0)
DO
select tmp;??--?將tmp打印出來,會發(fā)現(xiàn)tmp就像一個指針,一開始指向第一行,游標走一步,則指向下一行記錄
UPDATE users
SET student_ID = tmp + 100
WHERE student_ID = tmp;
FETCH cur INTO tmp;
END WHILE;
CLOSE cur;??--?關閉游標
END
執(zhí)行上面的存儲過程,你會發(fā)現(xiàn),users中的數(shù)據(jù)如你所愿的發(fā)生了變化。
當然,這個功能直接用循環(huán)就可以解決,我這里只是簡單展示一下游標的用法,利于對游標有個感性認識。
that‘s??all~
總結
以上是生活随笔為你收集整理的mysql光标不见了_mysql创建光标失败的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql解释器优化_MySQL——SQ
- 下一篇: nginx proxy svn 加快_H