繁体   English   中英

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

[英]Storing a field in a variable in stored procedure

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的空值。

让我知道该程序是否在任何地方出错?

谢谢

=只是检查是否相等。 赋值运算符是:= 虽然你最好这样写

SELECT 'whatever' INTO variable_name FROM table;

从我的头上不确定,赋值运算符是否仅限于用户定义的变量(以@开头的变量)。

您还应该记住的是,该变量将保存选择的最后一行的值,而不是每一行的值。 您的过程总的来说是……嗯,程序员将其称为undefined behaviour
添加一个ORDER BY子句(最好使用LIMIT )或确保您的WHERE子句将结果限制为一行。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM