在存储过程中的变量中存储字段

时间:2015-04-28 10:16:44

标签: mysql stored-procedures

DELIMITER $$

DROP PROCEDURE IF EXISTS `ecview_1_10_siruseri`.`test` $$
CREATE DEFINER=`super`@`%` PROCEDURE `test`(In MeterThreadName varchar(30))
BEGIN

Declare MeterThreadId int;

select last_processed_time,meterthreadid=meter_thread_id from meter_thread where name =MeterThreadName;


select ems_device_name, meter_parameter_type_map_id from ems_device e
join meter_parameter_type_map mp on e.meter_id = mp.meter_id and mp.meter_thread_id = meterThreadID;


END $$

DELIMITER ;

我正在尝试将字段存储在变量 meterthreadid = meter_thread_id 中,然后在另一个查询中使用它,但我得到的只是meter_thread_id的空值..

如果程序在任何地方都错了,请告诉我?

由于

1 个答案:

答案 0 :(得分:0)

=只是检查是否相等。赋值运算符为:=。虽然你最好把它写成

SELECT 'whatever' INTO variable_name FROM table;

如果赋值运算符仅限于用户定义的变量(以@开头的变量),那么从头到尾不确定。

你还应该记住的是,变量将保存select选取的最后一行的值,而不是每一行。总而言之,你的程序非常......好吧,程序员会称之为undefined behaviour 添加ORDER BY子句(最好带有LIMIT)或确保您的WHERE子句将结果限制为一行。

总而言之,我想知道,你的程序实际上有什么好处。您也可以在一个SELECT语句中完成所有操作。