程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL存儲過程傳參之in,out,inout參數用法

MySQL存儲過程傳參之in,out,inout參數用法

編輯:MySQL綜合教程

MySQL存儲過程傳參之in,out,inout參數用法


存儲過程傳參:存儲過程的括號裡,可以聲明參數。 語法是 create procedure p([in/out/inout] 參數名 參數類型 ..) in :給參數傳入值,定義的參數就得到了值 out:模式定義的參數只能在過程體內部賦值,表示該參數可以將某個值傳遞回調用他的過程(在存儲過程內部,該參數初始值為 null,無論調用者是否給存儲過程參數設置值) inout:調用者還可以通過 inout 參數傳遞值給存儲過程,也可以從存儲過程內部傳值給調用者
如果僅僅想把數據傳給 MySQL 存儲過程,那就使用“in” 類型參數; 如果僅僅從 MySQL 存儲過程返回值,那就使用“out” 類型參數; 如果需要把數據傳給 MySQL 存儲過程,還要經過一些計算後再傳回給我們,此時,要使用“inout” 類型參數。 MySQL 存儲過程參數如果不顯式指定"in"、"out"、"inout",則默認為"in"。
實例一:存儲過程傳參 in
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
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$$
\

實例三:存儲過程傳參 inout
CREATE PROCEDURE p3(INOUT age INT)
BEGIN
  SET age := age + 20;
END$$
set @currage =18$$
call p3(@currage)$$
select @currage$$


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved