MySql存儲過程—4、參數
相關鏈接:
MySql存儲過程—1、SQL存儲過程的基礎知識
http://www.BkJia.com/database/201208/148790.html;
MySql存儲過程—2、第一個MySql存儲過程的建立
http://www.BkJia.com/database/201208/148791.html;
MySql存儲過程—3、變量
http://www.BkJia.com/database/201208/149069.html
1、參數分類
參數,同編程一樣,MySql中存儲過程也可以帶參數,前面的例子中我們沒有使用參數,在下面的例子中我們將使用到參數;MySql的參數分為三類:IN、OUT、INOUT,即使是字面上這三種類型的參數也很好理解:
www.2cto.com
——IN:這是個默認的類型,也就是如果參數沒指定類型的話,那麼默認就是IN類型了,這種參數主要是傳遞進去的值,這個值提供給存儲過程使用,另外存儲過程對其做的改變不會對傳入的參數發生作用。
——OUT:這個主要是存儲過程要傳遞出去的值,也就是存儲過程給你將它改變,並且傳回去給調用它的程序。
——INOUT:則把上面兩個的特點合在一起了,即可以傳遞值給存儲過程使用,同時存儲過程也可以改變這個值在傳給調用它的程序。
2、參數定義
參數的定義如下:
MODE param_name param_type(param_size);
這裡MODE可以是IN、OUT、INOUT;param_name就是參數名稱;param_type則是類型。當然要注意的是名字不能和表格裡的字段重名。
看看下面的使用例子:
www.2cto.com
這個例子裡面,我們對存儲過程傳入了一個參數,這裡參數是個字符串,我們希望通過這個存儲過程來列出products表格中name字段中包含有傳入的字符串的記錄。這裡數據主要用途就是傳給存儲過程使用,所以使用IN。下面是對應的執行結果:
注意到傳遞給了GetAll這個存儲過程一個數據為“ca”的參數
在這個基礎上我們把記錄數作為存儲過程輸出給外部的數據來看一下OUT的使用。
上面把記錄數保持到輸出參數 totalNum中。
這裡使用一個會話變量作為輸出參數,存儲過程處理後,保持記錄速到@totalRecords中。然後我們運行select @totalRecords,輸出為2。