将函数存储到需要参数的变量中

vc9ivgsu  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(316)

下面给出了一个查询示例

SET @first_day_of_current_year = MAKEDATE(YEAR(CURRENT_DATE), 1);
SET @current_month = MONTH(CURRENT_DATE);

SELECT *
FROM document
WHERE
    created >= (SELECT DATE_ADD(@first_day_of_current_year, INTERVAL @current_month - 2 MONTH))
AND 
    created < (SELECT DATE_ADD(@first_day_of_current_year, INTERVAL @current_month - 1 MONTH));

我要获取在两个日期范围内创建的所有文档。如你所见,我将一些计算放入变量中,因为我可以在 WHERE 条款。此外,这些计算结果只相差一个值,即月末的月份。所以计算也可以

SELECT DATE_ADD(@first_day_of_current_year, INTERVAL @current_month - x MONTH)

有没有办法为需要参数的计算创建一个临时函数?like so(伪语法)

SET @calculator = amountOfMonths => SELECT DATE_ADD(@first_day_of_current_year, INTERVAL @current_month - {{amountOfMonths}} MONTH);

这不会提高性能,但可能会提高可读性,因为可以重用某些东西。

bzzcjhmw

bzzcjhmw1#

您可以使用存储过程来完成所需的任务。然后可以将设置为out参数的参数传递给它,并在调用过程后使用它。
像这样的东西;

DROP PROCEDURE IF EXISTS fetch_documents;
CREATE PROCEDURE fetch_documents(OUT foo integer)

BEGIN
    --here you set your out parameter equal to the calculation
end;

打电话给你可以这样做;

CALL fetch_documents(@foo);

SELECT @foo;

希望这有帮助!

相关问题