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的空值..
如果程序在任何地方都错了,请告诉我?
由于
答案 0 :(得分:0)
=
只是检查是否相等。赋值运算符为:=
。虽然你最好把它写成
SELECT 'whatever' INTO variable_name FROM table;
如果赋值运算符仅限于用户定义的变量(以@
开头的变量),那么从头到尾不确定。
你还应该记住的是,变量将保存select选取的最后一行的值,而不是每一行。总而言之,你的程序非常......好吧,程序员会称之为undefined behaviour
添加ORDER BY
子句(最好带有LIMIT
)或确保您的WHERE
子句将结果限制为一行。
总而言之,我想知道,你的程序实际上有什么好处。您也可以在一个SELECT
语句中完成所有操作。