首页 > 解决方案 > 如何在其他存储过程mysql中重用相同的查询代码(不是结果)?

问题描述

我正在研究mysql中的存储过程。

我发现对于某些 proc 我必须编写相同部分的 sql 查询,但是我需要一种方法来在所有 proc 中重用相同的查询代码(而不是结果),我该怎么做?

这是我的 S.proc:

BEGIN
    SELECT date, sum(size_kg) as `total_size`, sum(net_size) as `total_net_size`,sum(bags) as `total_bags` FROM `stock` WHERE date=CURDATE() GROUP By CURDATE();
END

where 子句之前的代码在所有 proc 中都是相同的,那么我如何重用该查询部分代码(不是结果)?

标签: phpmysqlstored-proceduresroutines

解决方案


由于这个特定的过程似乎只是一个单一的、直接的 SELECT 语句,因此使其可从多个其他地方重用的最简单的方法就是将其转换为视图。

如果,如您所说,WHERE 子句可能因使用代码的位置而有所不同,那么只需从视图中省略 WHERE 子句,并让每个调用者设置自己的 WHERE 子句以将视图返回的数据限制为任何它需要是。


推荐阅读