MySQL 預存程序傳參之in, out, inout 參數用法

來源:互聯網
上載者:User

標籤:

預存程序傳參:預存程序的括弧裡,可以聲明參數。 文法是 create procedure p([in/out/inout] 參數名  參數類型 ..)in :給參數傳入值,定義的參數就得到了值out:模式定義的參數只能在過程體內部賦值,表示該參數可以將某個值傳遞迴調用他的過程(在預存程序內部,該參數初始值為 null,無論調用者是否給預存程序參數設定值)inout:調用者還可以通過 inout 參數傳遞值給預存程序,也可以從預存程序內部傳值給調用者
如果僅僅想把資料傳給 MySQL 預存程序,那就使用“in” 型別參數;如果僅僅從 MySQL 預存程序傳回值,那就使用“out” 型別參數;如果需要把資料傳給 MySQL 預存程序,還要經過一些計算後再傳回給我們,此時,要使用“inout” 型別參數。 
  1. DELIMITER $$  
  2. CREATE PROCEDURE p1(IN num INT)  
  3. BEGIN  
  4.   DECLARE i INT DEFAULT 0;  
  5.   DECLARE total INT DEFAULT 0;  
  6.   WHILE i<=num DO  
  7.     SET total := i + total;  
  8.     SET i := i+1;  
  9.   END WHILE;  
  10.   SELECT total;  
  11. END$$  


預存程序傳參 out [sql] view plain copy
  1. CREATE PROCEDURE p2(OUT num INT)  
  2. BEGIN  
  3.  SELECT num AS num_1;  
  4.  IF (num IS NOT NULL) THEN  
  5.  SET num = num + 1;  
  6.  SELECT num AS num_2;  
  7.  ELSE  
  8.  SELECT 1 INTO num;  
  9.  END IF;  
  10.  SELECT num AS num_3;  
  11. END$$  
  12. SET @num = 10$$  
  13. CALL p2(@num)$$  
  14. SELECT @num AS num_out$$  


  1. CREATE PROCEDURE p3(INOUT age INT)  
  2. BEGIN  
  3.   SET age := age + 20;  
  4. END$$  
  5. set @currage =18$$  
  6. call p3(@currage)$$  
  7. select @currage$$  

MySQL 預存程序傳參之in, out, inout 參數用法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.