中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何使用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

阜城县| 平邑县| 光山县| 师宗县| 孟州市| 眉山市| 泾川县| 额敏县| 潞西市| 红河县| 揭西县| 闽侯县| 霍林郭勒市| 娄底市| 沅陵县| 徐州市| 左权县| 彭山县| 房山区| 达州市| 斗六市| 南康市| 墨竹工卡县| 潢川县| 小金县| 屯门区| 金湖县| 新乡市| 当阳市| 广汉市| 万宁市| 永仁县| 汶川县| 中方县| 宁波市| 农安县| 喀喇沁旗| 荣成市| 建阳市| 盖州市| 科技|