亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用mysql游標

發布時間:2020-08-04 13:49:12 來源:億速云 閱讀:513 作者:小豬 欄目:MySQL數據庫

這篇文章主要為大家展示了如何使用mysql游標,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

什么是游標:

  • 如果你前面看過mysql函數,會發現無法使用返回多行結果的語句。但如果你又確實想要使用時,就需要使用到游標,游標可以幫你選擇出某個結果(這樣就可以做到返回單個結果)。
  • 另外,使用游標也可以輕易的取出在檢索出來的行中前進或后退一行或多行的結果。
  • 游標可以遍歷返回的多行結果。

補充:

  • Mysql中游標只適用于存儲過程以及函數。

創建游標:

  • 語法:
    • 1.定義游標:declare 游標名 cursor for select語句;
    • 2.打開游標:open 游標名;
    • 獲取結果:fetch 游標名 into 變量名[,變量名];
    • 關閉游標:close 游標名;
      create procedure p1()
      begin
        declare id int;
        declare name varchar(15);
        -- 聲明游標
        declare mc cursor for select * from class;
        -- 打開游標
        open mc;
        -- 獲取結果
        fetch mc into id,name;
        -- 這里是為了顯示獲取結果
        select id,name;
        -- 關閉游標
        close mc;
        
      end;
         
      create procedure p2()
      begin
        declare id int;
        declare name varchar(15);
        -- 聲明游標
        declare mc cursor for select * from class;
        -- 打開游標
        open mc;
        -- 獲取結果
        loop -- 循環,將表的內容都轉移到class2中
        fetch mc into id,name;
        -- 這里是為了顯示獲取結果
        insert into class2 values(id,name);
        -- 關閉游標
        end loop;
        close mc;
        
      end;
         

使用游標:

  • 游標每一次fetch都是獲取一行結果,可以使用變量來獲取fetch到的每一列的值
    create procedure p2()
    begin
      declare id int;
      declare name varchar(15);
      -- 聲明游標
      declare mc cursor for select * from class;
      -- 打開游標
      open mc;
      -- 獲取結果
      loop -- 循環,將表的內容都轉移到class2中
      fetch mc into id,name;
      -- 這里是為了顯示獲取結果
      insert into class2 values(id,name);
      -- 關閉游標
      end loop;
      close mc;
      
    end;
     

上面的代碼會有一個報錯如何使用mysql游標,不斷循環的話,始終會達到表的末尾,到了末尾就無法繼續fetch,一般來說都要避免報錯,到了末尾前會有一個mysql定義的

create procedure p3()
begin
  declare id int;
  declare name varchar(15);
  declare flag int default 0;
  -- 聲明游標
  declare mc cursor for select * from class;
  declare continue handler for not found set flag = 1;
  -- 打開游標
  open mc;
  -- 獲取結果
  l2:loop 
  
  fetch mc into id,name;
  if flag=1 then -- 當無法fetch會觸發handler continue
    leave l2;
  end if;
  -- 這里是為了顯示獲取結果
  insert into class2 values(id,name);
  -- 關閉游標
  end loop;
  close mc;
  
end;

call p3();-- 不報錯
select * from class2;

以上就是關于如何使用mysql游標的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜阳市| 武定县| 蓬莱市| 织金县| 水富县| 洪雅县| 宣威市| 新宾| 黄龙县| 平罗县| 岳普湖县| 凤阳县| 赤城县| 富顺县| 广宗县| 蒙阴县| 玛曲县| 遂昌县| 陆川县| 兰溪市| 高州市| 黄山市| 扎鲁特旗| 修文县| 涡阳县| 光泽县| 万盛区| 柳州市| 内乡县| 莱州市| 开原市| 昭觉县| 建湖县| 商都县| 丰镇市| 西盟| 和田市| 长顺县| 潢川县| 张北县| 于都县|