如何在 MySQL 过程中使用 OUT 参数/使用 SELECT 从 table 读取数据

How to use an OUT paramter / read data with SELECT from table in a MySQL procedure

我是在 MySql 中创建过程的新手并且仍在学习它。所以,我坚持创建程序并需要帮助。这个问题可能看起来很基础,但它会帮助我从基础知识中学习。

问题:
当我指定 pilot_nbr.

时,我想为每个飞行员获取 salary 的详细信息

飞行员 Table 包括

示例数据

'701', '7111', 'Dark', 'Jack', '1st officer', '6 street', '6042233445', '789', 'PTE', '145000.00', NULL 
'702', '7222', 'Mack', 'Bill', '1st officer', '7 street', '6043344556', '890', 'EMP', '155000.00', '701'
'703', '7333', 'Cheung', 'Charles', '2nd officer', '8street','6044455667','503','PTE','140000.00','701'  
'704', '7444', 'Gordon', 'Greg', '1st officer', '9 street', '6045566778', '123', 'EMP', '125000.00', '701'
'705', '7555', 'Basso', 'Nicki', '2nd officer', '5 street', '6046677889', '223', 'EMP', '163000.00', '701'
'706', '7666', 'Vettel', 'Sebast', '1st officer', '5 street', '6046677800', '523', 'EMP', '199000.00','701'
'707', '7777', 'Hawke','Mike','2ndofficer','7street','6046677326',423','EMP','139000.00','701'

这是我所做的并卡住了:

DELIMITER //
CREATE PROCEDURE pilot_Salary_Procedure( IN pilot_Number INT(20), OUT pilot_Salary DECIMAL(10,2))
 BEGIN 
 DECLARE pilot_NummberVariable INT(20);
 SELECT pilot_nbr INTO pilot_NumberVariable
 FROM pilot  
 WHERE pilot_nbr = pilot_Number;
 END //

我会那样做的(希望这是你想要的):

DELIMITER //
CREATE PROCEDURE pilot_Salary_Procedure( IN pilot_Number INT(20), OUT pilot_Salary DECIMAL(10,2))
 BEGIN 
 SELECT salary INTO pilot_Salary
 FROM pilot  
 WHERE pilot_nbr = pilot_Number;
 END //

然后您可以使用

执行此过程
call pilot_Salary_Procedure(701, @salary);

然后将结果存储在会话变量中 salary。您可以通过发出

来读取此变量的值
select @salary;

因此会得到 145000 作为结果。

另见 http://dev.mysql.com/doc/refman/5.7/en/call.html

注意:注意您的数据类型:您上面的符号表明 table 中的所有值都是类似字符串的(例如 CHAR 或 VARCHAR)。虽然这对于 first_namelast_namephone 之类的属性来说完全没问题,但对于 salary 之类的其他属性甚至标识符(pilot_nbrpilot_nbrmanager_nbr)。特别是 salary 应该是 DECIMAL(15,2) 或类似的。