如何使用游標?
使用游標的4條特殊語句
1)、宣告游標
宣告格式:
declare 游標名 cursor for select (返回一行或多行資料)
select語句中不能有into子句,乙個塊中的每個游標必須有唯一的名字。
游標只能在儲存過程或儲存函式中使用,語句不能單獨執行。
2)、開啟游標
open 游標名;
這個比較簡單哦!
3)、讀取游標
fetch 游標名 into var_name[,var_name]……
說明:fetch語句是將游標指向的一行資料賦給一些變數,子句中變數的數目必須等於宣告游標時select子句中列的數目。var_name 是存放資料的變數名。
4)、關閉游標
close 游標名;
不要忘記哦!
今天的小例項
1)、
mysql> create procedure p19(out para1 int)
-> begin
-> declare v int default 0;
-> declare c cursor for
-> select s1 from t1;
-> open c;
-> while v<5 do
-> fetch c into para1;
-> set v=v+1;
-> end while;
-> close c;
-> end//
query ok, 0 rows affected (0.00 sec)
mysql> call p19(@x);//
query ok, 0 rows affected (0.00 sec)
mysql> select @x;//
+------+
| @x |
+------+
| 90 |
+------+
1 row in set (0.00 sec)
2)、mysql> create procedure p20(out para1 int )
-> begin
-> declare a boolean default true ;
-> declare c cursor for
-> select s1 from t1 ;
-> declare exit handler for not found
-> set a=false;
-> open c;
-> while a do
-> fetch c into para1;
-> end while;
-> close c;
-> end//
query ok, 0 rows affected (0.00 sec)
mysql>
mysql> call p20(@x);//
query ok, 0 rows affected (0.00 sec)
mysql> select @x;
-> //
+------+
| @x |
+------+
| 90 |
+------+
1 row in set (0.00 sec)
這兩個例子通過不同的方法,得到了相同的結果。
乙個簡單的小補充
mysql資料庫中,mysql語言的組成部分
1) 資料庫的定義語言(ddl)
包括:create alter drop
2) 資料庫的操縱語言(dml)
包括:select(使用最頻繁的sql語句之一) insert update delete(刪除)
3) 資料庫的控制語言(dcl)
包括:crant(授予許可權) revoke(收回許可權)
關於認證的看法,歡迎大家一起討論
關於認證的看法 證書這真是個好東西啊!多少人為它花盡心思,花盡金錢的去得到它。它也正被人理解成。有了證書才能找到好的工作!沒錯,在以前的確是這樣。但現在已經發生了很多變化!以前考證書複習資料很少,要想考過試拿到證書,完全是通過努力得來的,而現在,考證書我大家都是在背題庫吧。考的人多了,當然就越來越不...
報告ArrayList的乙個錯誤,大家一起來研究下
目的 計算一段文字中重複出現的詞的個數。分兩種情況 1.文字在記憶體中 2.文字在硬碟檔案上 方案利用arraylist 宣告乙個類 public class entity color red 1.文字在記憶體中 color 主類中有以下 string words arraylistenlist n...
關於group by 和max函式一起使用的坑
前幾天去參加一場面試,面試過程中有被問到乙個sql語句的問題,很遺憾沒有回答上來,結果一面直接掛 問完這個問題後,當我聽到面試官對我說 你有什麼想問我的嗎?我的內心一片涼涼 其實面試官問的問題聽起來很簡單,一張劇目演出表,表中有 劇目id,劇目名稱,演出單位,票房 問 查詢出每個演出單位票房最高的劇...