簡體   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