1. 程式人生 > >儲存過程in和out

儲存過程in和out

最近儲存過程被問得很多,然而已經做的專案資料量一般,也用不上這個東西,這東西怎麼寫也不知道。沒事在網上瞅了瞅簡單的儲存過程的寫法。

寫個2個的in和out的簡單例子,熟悉下儲存過程的寫法和in,out的區別。


mysql對於儲存過程的寫法DELIMITER//,沒有這個分割符的申明,mysql預設為sql語句執行。

CREATE PROCEDURE([[IN |OUT |INOUT ]引數名資料類形...]),建立一個儲存過程。

begin開頭end結尾。

定義一個變數set var , if 判斷語句的寫法,if()  then  else  end if,上面寫了2個判斷var=0插入一條語句,parameter傳入的引數=0 執行修改語句esle不為0執行另外一條修改語句。

然後執行      SET @parameter=0; CALL proc2(@parameter); 語句引數賦值,執行儲存過程。這就相當於一次儲存過程的呼叫

in和out的區別,我的理解是一個

in:輸入引數,儲存過程如果修改了引數值,那麼不能被返回。

out:輸出引數,儲存過程中修改了引數值,可以被返回。


 輸出結果為   (1,2,1),傳入引數1,在儲存過程中賦值2,查詢引數值為1沒有,沒有因儲存過程中的賦值,改變引數值.


輸出結果為(null,2,2),輸出引數開始為null,儲存過程賦值為2,查詢引數引數為2,引數值返回了。


最後一種inout,查詢結果(1,2,2),可以理解為輸入輸出引數。

儲存過程的查詢。

查詢資料庫下有哪些儲存過程:SELECT NAME FROM mysql.proc WHERE db='資料庫名';

查詢儲存過程的詳情:SHOW CREATE PROCEDURE 資料庫名.儲存過程名。