程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 在MySQL中創建帶有IN和OUT參數的存儲過程的方法

在MySQL中創建帶有IN和OUT參數的存儲過程的方法

編輯:關於MYSQL數據庫

 在 MySQL 中創建儲存過程的語法很難記,除非你經常跟儲存過程打交道,原因很簡單,語法不是什麼小笑話。如果你通過命令行控制 MySQL,你需要記住准確的語法。一個快速示例可以很好的幫助你做到這點。在MySQL 入門教程中,我們能夠看到很多關於如何創建儲存過程 和如何利用 IN 和 OUT 參數調用存儲過程的示例。這些示例都很簡單,能夠很好的幫助你理解 MySQL 中創建帶參數存儲過程的語法。這些示例已在 MySQL 5.5 中通過測試。我們將用下面的雇員表創建並測試這些儲存過程:
 

mysql> select * from employee;
+--------+----------+---------+--------+
| emp_id | emp_name | dept_id | salary |
+--------+----------+---------+--------+
|  103 | Jack   |    1 |  1400 |
|  104 | John   |    2 |  1450 |
|  108 | Alan   |    3 |  1150 |
|  107 | Ram   |  NULL |  600 |
+--------+----------+---------+--------+
4 rows in set (0.22 sec)

創建和使用帶In參數的MySQL存儲過程
下面是一個命令行方式創建MySQL存過的例子,我們根據 department從employee表中獲取一個總數,dept_id是department表的 外鍵。
 
mysql> DELIMITER //
mysql> create procedure usp_totalEmployeeByDeparment(IN id INT)
  -> begin
  -> select count(*) as total from employee where dept_id = id;
  -> end//
Query OK, 0 rows affected (0.00 sec)

 
mysql> DELIMITER ;
首先我們改變默認的分隔符為“//”來作為存儲過程結束的標識,隨後再恢復默認值。使用“usp”前綴是區分系統存過過程和用戶自定義存儲過程的最佳實踐。現在你可以在MySQL命令行像這樣來調用存過:
 

mysql> call usp_totalEmployeeByDeparment(2);
+-------+
| total |
+-------+
|   1 |
+-------+
1 row in set (0.06 sec)

創建和使用帶IN和OUT參數的存儲過程

在這個MySQL例子中,我們創建了一個IN和一個OUT參數的存儲過程 usp_GetEmployeeName。當調用這個存儲過程時,你需要傳遞2個參數:id和name,一個作為輸入參數id,另外一個作為輸出參數返回結果。
 

mysql> DELIMITER //
mysql> create procedure usp_GetEmployeeName(IN id INT, OUT name VARCHAR(20))
  -> begin
  -> select emp_name into name from employee where emp_id = id;
  -> end//
Query OK, 0 rows affected (0.52 sec)
 
mysql> DELIMITER ;
 
mysql> call usp_GetEmployeeName(103, @name);
Query OK, 1 row affected (0.05 sec)
以MySQL命令行方式調用存過:
 
mysql> select @name;
+-------+
| @name |
+-------+
| Jack |
+-------+
1 row in set (0.00 sec)

這就是怎樣從命令行方式創建和調用存儲過程的所有內容,在這個教程中,我們創建了帶IN和OUT參數的存儲過程多個例子。這是記住MySQL數據庫存過語法的最好方式。

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