Mysql查询到存储过程
Posted
技术标签:
【中文标题】Mysql查询到存储过程【英文标题】:Mysql Query to Stored Procedure 【发布时间】:2021-04-29 11:32:37 【问题描述】:我可以访问具有以下值的数据表 (mysql 8) 的视图:
Values DB
现在我尝试编写一个mysql查询来用最后一个值填充Null值,因为我们的可视化工具不能使用空值并且图表中的线条会消失。
SELECT UTCTIME,
case when Flammtemperatur1 is NULL then
@vorheriger_wert_Flammtemperatur1
else
@vorheriger_wert_Flammtemperatur1 := Flammtemperatur1
end as Flammtemperatur_1,
case when Flammtemperatur2 is NULL then
@vorheriger_wert_Flammtemperatur2
else
@vorheriger_wert_Flammtemperatur2 := Flammtemperatur2
end as Flammtemperatur_2,
case when Rauchgasventilator is NULL then
@vorheriger_wert_Rauchgasventilator
else
@vorheriger_wert_Rauchgasventilator := Rauchgasventilator
end as Rauchgasventilator_,
case when Rezirkulation is NULL then
@vorheriger_wert_Rezirkulation
else
@vorheriger_wert_Rezirkulation := Rezirkulation
end as FRezirkulation_
FROM pivot_test
order by utctime asc
这很好,但我需要将其保存在视图或存储过程中,以便我们的工具可以访问它。由于会话变量,无法查看。 有人可以帮我为我的问题创建一个存储过程吗?我以前从未写过SP。
谢谢!
Result
【问题讨论】:
在查询开头添加CREATE PROCEDURE procedure_name ()
- 仅此而已。不要忘记括号后的空格或换行符,替换 proc。需要一个的名字。然后直接执行CALL procedure_name;
。
您将问题标记为 MySQL 8+。如果是这样,我建议您避免使用 UDV,并在 CTE 中应用窗口函数。
非常感谢 - 它有效。我使用工作台和新程序,工作台包括开始和结束。如果我复制 begin 和 end 中间的文本,会出现一个 synthax 错误。但没有它的工作。 :-)
【参考方案1】:
创建过程 XXXXXName @Flammtemperatur1 DECIMAL (3,2), @Flammtemperatur2 DECIMAL (3,2) , @Rauchgasventilator 十进制 (3,2) ,@Rezirkulation 十进制 (3,2) 作为 选择UTC时间, Flammtemperatur1 为 NULL 时的情况 @vorheriger_wert_Flammtemperatur1 别的 @vorheriger_wert_Flammtemperatur1 := Flammtemperatur1 以 Flammtemperatur_1 结尾, Flammtemperatur2 为 NULL 时的情况 @vorheriger_wert_Flammtemperatur2 别的 @vorheriger_wert_Flammtemperatur2 := Flammtemperatur2 以 Flammtemperatur_2 结尾, Rauchgasventilator 为 NULL 时的情况 @vorheriger_wert_Rauchgasventilator 别的 @vorheriger_wert_Rauchgasventilator := Rauchgasventilator 以 Rauchgasventilator_ 结尾, Rezirkulation 为 NULL 时的情况 @vorheriger_wert_Rezirkulation 别的 @vorheriger_wert_Rezirkulation := Rezirkulation 以 FRezirkulation_ 结尾 FROM pivot_test 按 utctime asc 排序
【讨论】:
以上是关于Mysql查询到存储过程的主要内容,如果未能解决你的问题,请参考以下文章