天天看點

MySql存儲過程—4、參數

1、參數分類

參數,同程式設計一樣,MySql中存儲過程也可以帶參數,前面的例子中我們沒有使用參數,在下面的例子中我們将使用到參數;MySql的參數分為三類:IN、OUT、INOUT,即使是字面上這三種類型的參數也很好了解:

    ——IN:這是個預設的類型,也就是如果參數沒指定類型的話,那麼預設就是IN類型了,這種參數主要是傳遞進去的值,這個值提供給存儲過程使用,另外存儲過程對其做的改變不會對傳入的參數發生作用。

    ——OUT:這個主要是存儲過程要傳遞出去的值,也就是存儲過程給你将它改變,并且傳回去給調用它的程式。

    ——INOUT:則把上面兩個的特點合在一起了,即可以傳遞值給存儲過程使用,同時存儲過程也可以改變這個值在傳給調用它的程式。

2、參數定義

參數的定義如下:

MODE param_name param_type(param_size);

這裡MODE可以是IN、OUT、INOUT;param_name就是參數名稱;param_type則是類型。當然要注意的是名字不能和表格裡的字段重名。

看看下面的使用例子:

MySql存儲過程—4、參數

這個例子裡面,我們對存儲過程傳入了一個參數,這裡參數是個字元串,我們希望通過這個存儲過程來列出products表格中name字段中包含有傳入的字元串的記錄。這裡資料主要用途就是傳給存儲過程使用,是以使用IN。下面是對應的執行結果:

MySql存儲過程—4、參數

注意到傳遞給了GetAll這個存儲過程一個資料為“ca”的參數

在這個基礎上我們把記錄數作為存儲過程輸出給外部的資料來看一下OUT的使用。

MySql存儲過程—4、參數

上面把記錄數保持到輸出參數 totalNum中。

MySql存儲過程—4、參數

這裡使用一個會話變量作為輸出參數,存儲過程處理後,保持記錄速到@totalRecords中。然後我們運作select @totalRecords,輸出為2。