MySQL 存储过程传参之in, out, inout 参数用法
生活随笔
收集整理的這篇文章主要介紹了
MySQL 存储过程传参之in, out, inout 参数用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
存儲過程傳參:存儲過程的括號里,可以聲明參數。 語法是 create procedure p([in/out/inout] 參數名 ?參數類型 ..) in :給參數傳入值,定義的參數就得到了值 out:模式定義的參數只能在過程體內部賦值,表示該參數可以將某個值傳遞回調用他的過程(在存儲過程內部,該參數初始值為 null,無論調用者是否給存儲過程參數設置值) inout:調用者還可以通過 inout 參數傳遞值給存儲過程,也可以從存儲過程內部傳值給調用者
如果僅僅想把數據傳給 MySQL 存儲過程,那就使用“in” 類型參數; 如果僅僅從 MySQL 存儲過程返回值,那就使用“out” 類型參數; 如果需要把數據傳給 MySQL 存儲過程,還要經過一些計算后再傳回給我們,此時,要使用“inout” 類型參數。?
存儲過程傳參 out [sql] view plaincopy
如果僅僅想把數據傳給 MySQL 存儲過程,那就使用“in” 類型參數; 如果僅僅從 MySQL 存儲過程返回值,那就使用“out” 類型參數; 如果需要把數據傳給 MySQL 存儲過程,還要經過一些計算后再傳回給我們,此時,要使用“inout” 類型參數。?
- DELIMITER?$$??
- CREATE?PROCEDURE?p1(IN?num?INT)??
- BEGIN??
- ??DECLARE?i?INT?DEFAULT?0;??
- ??DECLARE?total?INT?DEFAULT?0;??
- ??WHILE?i<=num?DO??
- ????SET?total?:=?i?+?total;??
- ????SET?i?:=?i+1;??
- ??END?WHILE;??
- ??SELECT?total;??
- END$$??
存儲過程傳參 out [sql] view plaincopy
- CREATE?PROCEDURE?p2(OUT?num?INT)??
- BEGIN??
- ?SELECT?num?AS?num_1;??
- ?IF?(num?IS?NOT?NULL)?THEN??
- ?SET?num?=?num?+?1;??
- ?SELECT?num?AS?num_2;??
- ?ELSE??
- ?SELECT?1?INTO?num;??
- ?END?IF;??
- ?SELECT?num?AS?num_3;??
- END$$??
- SET?@num?=?10$$??
- CALL?p2(@num)$$??
- SELECT?@num?AS?num_out$$??
- CREATE?PROCEDURE?p3(INOUT?age?INT)??
- BEGIN??
- ??SET?age?:=?age?+?20;??
- END$$??
- set?@currage?=18$$??
- call?p3(@currage)$$??
- select?@currage$$??
轉載于:https://www.cnblogs.com/kabi/p/5903491.html
總結
以上是生活随笔為你收集整理的MySQL 存储过程传参之in, out, inout 参数用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 登陆问题
- 下一篇: [ CodeVS冲杯之路 ] P1116