php - 如何在其他存储过程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 中都是相同的,那么我如何重用该查询部分代码(不是结果)?
解决方案
由于这个特定的过程似乎只是一个单一的、直接的 SELECT 语句,因此使其可从多个其他地方重用的最简单的方法就是将其转换为视图。
如果,如您所说,WHERE 子句可能因使用代码的位置而有所不同,那么只需从视图中省略 WHERE 子句,并让每个调用者设置自己的 WHERE 子句以将视图返回的数据限制为任何它需要是。
推荐阅读
- elasticsearch - 索引排序能否提高表中排序的性能?
- ios - Firebase 不在 M1 模拟器上构建(在范围内找不到“分析”)
- django-rest-framework - 为什么 Django-Haystack 不提供 apache solr 的结果?
- apache-spark - 遍历行以在 PySpark 中创建自定义公式结构
- html - 如果我在本地开发或开发云服务器上上传文件数据的差异[Flask-lambda]
- android - 如何在 Flutter 中检测 Android 11 中的 Upi
- argoproj - Argo 提供 x509:无法验证 127.0.0.1 的证书,因为它不包含任何 IP SAN 错误
- filter - 如何使用公共字段过滤不同结构的枚举向量?
- javascript - useState 没有工作
- node.js - NodeJS/ExpressJS : 发布请求的访问 URL