【问题标题】:MySQL user defined function with nested query insideMySQL 用户定义函数,里面有嵌套查询
【发布时间】:2019-02-26 03:34:35
【问题描述】:

我想创建一个 mysql 函数来根据我当地的假期日历获取到期日期(从 start_date 开始的 90 个工作日)。我的PHP函数中的查询是这样的..

select max(col_date) as due_date from (select col_date from ref_calendar where holiday=0 and col_date>'".$start_date."' limit 90) as a

我想把它做成一个mysql函数,这样我就可以查询“duedate(start_date)”来获取到期日期。

我试过了,但还是失败了。

CREATE FUNCTION duedate(st_date DATE)
DECLARE datedue DATE
BEGIN
SELECT MAX(col_date) INTO datedue from (select col_date from ref_calendar where holiday=0 and col_date>st_date limit 90);
RETURN datedue;
END

【问题讨论】:

  • 你是怎么失败的?
  • SQL 错误 (1064):您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以获取在第 2 行的“DECLARE datedue DATE BEGIN SELECT MAX(col_date) INTO datedue from (select col_”附近使用的正确语法
  • 问题已解决。 CREATE OR REPLACE FUNCTION duedate (st_date DATE) RETURNS DATE RETURN (select max(a.col_date) FROM (select col_date from ref_calendar where holiday=0 and col_date>st_date limit 90) as a);

标签: mysql user-defined-functions


【解决方案1】:

问题已解决。这是我阅读 MariaDB 知识库后的最终代码。

CREATE OR REPLACE FUNCTION duedate (st_date DATE) 
RETURNS DATE 
RETURN (select max(a.col_date) FROM (select col_date from ref_calendar where holiday=0 and col_date>st_date limit 90) as a);

谢谢! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-13
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    相关资源
    最近更新 更多