利用navicat寫mysql的存儲過程


最近項目經理讓我給新的活動的預留一個插入紅包和查看詳情的sql,方便在項目出問題的做一些緊急操作,我想了下這里面還涉及到挺多邏輯和挺多表的一句句查也不方便啊,干脆寫到存儲過程里,於是開始在navicat寫存儲過程,因為是第一次寫,在此記錄一下,方便下次查看 (•̀ᴗ•́)و ̑̑

1:選擇新建函數。

2:新建函數后會出現下面的界面,要是你不確定存儲過程的輸入輸出值,可以直接點擊完成,在里面的編輯的時候再加上這些參數,若是已經確定參數可以點擊下一步填寫相關參數。


3:如果上一步點擊的是下一步的話,就會出現下面的界面,各個參數的含義在界面右面的描述中有,其實用慣的也能猜出來,模式的命名也是見名知意的。

IN:存儲過程運行時需要輸入的參數,也就是入參。

OUT:儲存過程運行后的返回值,也就是出參。

INOUT:既是入參也是出參。


4:填完后點確認就會有下面的界面,navicat會給我們初識化好基本格式,如下:


5:現在我們就可以在begin和end直接編輯我們的語句,下面介紹存儲過程中常用的操作。

1):定義一個變量如下,使用 DECLARE修飾變量,后面跟變量名,變量的數據類型和大小;

DECLARE u1  bigint(20);

  
  
 
 
         

2):有了變量,我們就可以開始做賦值操作,先來個簡單的單個變量的賦值,如下直接使用SET變量名前使用@修飾,可以直接賦值也可以將入參賦值給變量,如下,將入參userId賦值給變量u1;


   
   
  
  
          
  1. SET @u1 = 89893;
  2. SET @u1 = userId;

3):我們還可以將查詢語句的結果賦值給變量如下,使用同單個變量的賦值類似,只需將查詢的查詢sql括起來就好了;


   
   
  
  
          
  1. SET
  2. @t1 = ( SELECT team_id FROM t_team_member WHERE user_id = @u1);

4):有了查詢的單列賦值,我們再說下多列賦值,如果查詢的返回值有多個列我們可以做如下的操縱,我們將查詢出來的結果team_id和id分別賦值給t1和m1變量,

上面的單列賦值用SET,多列賦值使用的是一個SELECT…… INTO 。


   
   
  
  
          
  1. SELECT team_id, id INTO
  2. @t1,@m1
  3. FROM t_team_member WHERE user_id = @u1;
5):說完了各種變量的賦值操作,我們還需要將結果返回,返回結果集的操作如下:SELECT @變量名  ( 變量名間用逗號分隔);

SELECT @max_effective_amount,@teamInvisitAmount
  
  
 
 
         

6):邏輯判斷時,在存儲過程中也能使用IF…… ELSE 格式為: IF(判斷的條件) THEN 滿足if條件做的操作 ELSE 不滿足if條件做的操作 END IF;


   
   
  
  
          
  1. if(@invisitAmount>@max_effective_amount) THEN
  2. SET @invisitAmount= @max_effective_amount;
  3. end if;

7):前面有說過一開始不確定入參和出參可以之后再編輯,編輯的參數的格式為: 【IN、OUT、INOUT】【參數名】 【參數的數據類型】,編寫完成后就可以點擊運行,

會彈出如下的輸入參數框,如果入參有多個參數的話,可以按順序用逗號分隔填入。



8):運行結果如下,允許有多個結果集,也就是多個SELECT 變量名 (多個變量中間用逗號分隔):

SELECT @u1,@newInvisit,@oldInvisit;
  
  
 
 
         










免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM