儲存過程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 資料庫名.儲存過程名。