国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
簡簡單單儲存過程

 摘要:本文主要講解了存儲過程的創(chuàng)建、調(diào)用、以及游標(biāo)的使用,相信掌握了游標(biāo)      會對你有不錯的幫助,有不足之處還請指教

 

導(dǎo)航: 一、存儲過程的創(chuàng)建及調(diào)用

            二 、游標(biāo)的使用

            三、  示例

            四、補充

 

說明:

        1、用到的兩個數(shù)據(jù)表:

 

       from_data  
      

 

       to_data

      
        

       2、示例需求 : 將表from_data 的select結(jié)果集循環(huán)插入到表to_data;

 

                              偽代碼   while 循環(huán) select id ,name from_data

 

                                          insert into to_data(id,name) value(from_data.id,from_data.name)

 

                                end

 

        3、環(huán)境: mysql

 

 

 

 一、存儲過程的創(chuàng)建及調(diào)用

 

           我們創(chuàng)建一個名叫 add_test的存儲過程

 

       1 、檢查是否有 add_test

Sql代碼  
  1. drop procedure if exists add_test;    

       2、創(chuàng)建

 

 

Sql代碼  
  1. create procedure add_test()     
  2.    (     
  3.    #[in|out|inout] 參數(shù) datatype   
  4.      
  5.    
  6.      a int;  
  7.      b int;  
  8.    )     
  9.    begin     
  10.    #SQL 語句;  
  11.   
  12.     
  13.       
  14.    end;    
 

   3、調(diào)用

 

Sql代碼  
  1. call add_test(1,2  
  2.   
  3. );  
  

 

   以上就是基本的創(chuàng)建方法,注意已下幾點:

        1 、在建立和調(diào)用時,add_test后面的“()”是必須的

        2、MySQL 存儲過程參數(shù)如果不顯式指定“in”、“out”、“inout”,則默認(rèn)為“in”,并且參數(shù)不能指定默認(rèn)值。

        3、包含多條 SQL 語句時,需要 begin end 關(guān)鍵字,在begin end里面的每條語句的末尾,都要加上分號 “;”

        4、在begin end里面聲明變量,使用關(guān)鍵字 DECLARE,如:

 

Sql代碼  
  1. begin   
  2.   
  3.   #聲明一個name變量,類型是varchar(記得分號)  
  4.   name varchar(32);     
  5. end;  
 

 

二 、游標(biāo)的使用

 

         1、定義游標(biāo)

Sql代碼  
  1. /*  
  2.     定義游標(biāo)的關(guān)鍵字:CURSOR。  
  3.     定義游標(biāo)cursor_name,  
  4.     游標(biāo)cursor_name當(dāng)前指針的記錄  
  5.     是一個表from_data的多行結(jié)果集  
  6.  */  
  7.   DECLARE cursor_name CURSOR FOR select id,name  
  8.   
  9. from from_data;  
 

 

 

       2、打開游標(biāo)

 

Sql代碼  
  1. #關(guān)鍵字:OPEN  
  2. OPEN cursor_name;   

 

   3、 獲取游標(biāo)

 

Sql代碼  
  1. #聲明兩個變量  
  2.   DECLARE a int  
  3.   
  4. ;  
  5.   DECLARE b varchar(32)  
  6.   
  7. ;  
  8.   
  9. /*  
  10.    FETCH 獲取游標(biāo)當(dāng)前指針的記錄,并傳給指定變量 a 、b  
  11. */  
  12. FETCH cursor_name INTO a,b;  
 

   注意:(1、此處很重要,我們在后面的循環(huán)例子中會詳細(xì)講解如何用,

           (2、注意變量數(shù)必須與MySQL游標(biāo)返回的字段數(shù)以及類型一致,請看2,3步的標(biāo)紅處,

           a的類型對應(yīng) id,b類型對應(yīng)name

 

  4、關(guān)閉游標(biāo)

 

Sql代碼  
  1. CLOSE cursor_name ;  
 

 

    以上就是游標(biāo)的常見使用方法,關(guān)鍵的部分我已在每一步中說明,就不在多說了,現(xiàn)在我們看下例子:

 

三、示例

 

Sql代碼  
  1. drop procedure if exists add_test;  
  2. # 創(chuàng)建存儲過程 add_test  
  3.   
  4.   
  5. CREATE PROCEDURE add_test()  
  6.   
  7.     BEGIN  
  8.            #定義 變量  
  9.   
  10.   
  11.            DECLARE a int;  
  12.            DECLARE b VARCHAR(30);  
  13.              
  14.            #此變可有可無,為了給個該存儲函數(shù)執(zhí)行成功后給個提示,運行下便知道  
  15.   
  16.   
  17.            DECLARE str VARCHAR(300);  
  18.            DECLARE x int;  
  19.              
  20.            #這個用于處理游標(biāo)到達(dá)最后一行的情況  
  21.   
  22.      
  23.            DECLARE s int default 0;  
  24.              
  25.            #聲明游標(biāo)cursor_name(cursor_name是個多行結(jié)果集)  
  26.   
  27.   
  28.            DECLARE cursor_name CURSOR FOR select id ,name from from_data;  
  29.              
  30.            #設(shè)置一個終止標(biāo)記   
  31.   
  32.     
  33.            DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s=1;  
  34.   
  35.   
  36.             set str = "--";  
  37.                 #打開游標(biāo)  
  38.   
  39.   
  40.                 OPEN cursor_name;  
  41.                       
  42.                     #獲取游標(biāo)當(dāng)前指針的記錄,讀取一行數(shù)據(jù)并傳給變量a,b  
  43.   
  44.   
  45.                     fetch  cursor_name into a,b;  
  46.                     #開始循環(huán),判斷是否游標(biāo)已經(jīng)到達(dá)了最后作為循環(huán)條件   
  47.   
  48.   
  49.                     while s <> 1 do  
  50.                             set str =  concat(str,x);  
  51.   
  52.                             insert into to_data(id,name) values(a,b);  
  53.                             #讀取下一行的數(shù)據(jù)  
  54.   
  55.     
  56.                             fetch  cursor_name into a,b;  
  57.                       
  58.                     end while;  
  59.                    
  60.                  #關(guān)閉游標(biāo)  
  61.   
  62.   
  63.                  CLOSE cursor_name ;  
  64.               
  65.             select str;  
  66.                
  67.     #語句執(zhí)行結(jié)束  
  68.   
  69.   
  70.     END;  
  71.       
  72.     #調(diào)用存儲函數(shù)add_test  
  73.   
  74.   
  75.     CALL add_test()  
  

 

 

   四、補充-關(guān)于ssh上運行

 

         由于mysql的解釋器默認(rèn)情況下,delimiter是分號;。在命令行客戶端中,如果有一行命令以分號結(jié)束,
     那么回車后,mysql將會執(zhí)行該命令
,我們在此處有很多分號,這樣很是不方便,這種情況下,我只需

     執(zhí)行如下命令:

                   執(zhí)行delimiter //

     即可把分號結(jié)束換成//結(jié)束,然后在換回

                  delimiter ;

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
常用存儲過程語法收藏
SQL Server 2005 創(chuàng)建簡單的存儲過程
PLSQL學(xué)習(xí)筆記
MYSQL 游標(biāo)學(xué)習(xí)及使用實例
如何同時對多個表或列操作
sqlserver 游標(biāo)全面解說
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服