1. 程式人生 > >利用navicat寫mysql的新建建立儲過程

利用navicat寫mysql的新建建立儲過程

使用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;