我正在创建一个临时表 alarm_clusters
在存储过程中。如果我通过 SELECT * FROM alarm_clusters
我得到了预期的结果集:
id |alarm_timestamp |alarm_rule_id |sensor_id |cluster_duration |time_delta |cluster_id |
---|--------------------|--------------|----------|-----------------|-----------|-----------|
1 |2018-01-01 00:00:00 |1 |1 |60 |0 |1 |
2 |2018-01-01 00:02:00 |1 |1 |60 |120 |2 |
3 |2018-01-01 00:02:20 |1 |1 |60 |20 |2 |
如果我只返回一列 SELECT alarm_timestamp FROM alarm_clusters;
我得到最后一行中该列的值:
alarm_timestamp |
--------------------|
2018-01-01 00:02:20 |
2018-01-01 00:02:20 |
2018-01-01 00:02:20 |
我用两个版本的存储过程创建了一个db fiddle。
我错过了什么?
1条答案
按热度按时间roqulrg31#
因为在过程alarm\u timestamp内的select查询中使用了声明的变量,所以得到的时间戳是相同的
在getalarmtimestamps过程中检查下面的行。
理想情况下,应该使用不同的名称变量,而不是与表列变量相同的名称变量,以避免此类小错误。
变量alarm\u timestamp具有您在光标中设置的最后一个值,该值显示alarm\u clusters表中的行的总时间
我希望这能解决你的困惑