MySQL - 带有来自视图字段的参数的用户定义函数的视图

时间:2017-05-11 03:16:57

标签: mysql sql function view

我在MYSQL中创建一个调度数据库。我有一个View,它从请假(假期,假期等)列表中获取信息,并显示日期。 我在尝试查看视图时收到错误1292:不正确的日期值。我知道这个错误通常是在日期格式不正确的情况下,但所有数据都已正确格式化(yyyy-mm-dd)。我真的很沮丧,我似乎找不到任何文献来修改这个问题。

这是视图

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`localhost` 
    SQL SECURITY DEFINER
VIEW `db`.`complete` AS
    SELECT 
        `db`.`datetable`.`Date` AS `D`,
        `db`.`mdcodes`.`Physician` AS `MD`,
        SCHEDULER(`db`.`datetable`.`Date`,
         db`.`mdcodes`.`Physician`) AS `Status`
    FROM
        (`db`.`mdcodes`
        JOIN `db`.`datetable`)

这是函数

    CREATE DEFINER=`root`@`localhost` FUNCTION `Scheduler`(MD VARCHAR(40), requestedDate Date) RETURNS varchar(40) CHARSET utf8
    BEGIN
    DECLARE workTime VARCHAR(40);

    if !(isNull((SELECT LeaveType from LeaveSchedule where Dates=requestedDate AND Physician = MD)))
        THEN SET workTime = (SELECT LeaveType from LeaveSchedule where Dates=requestedDate AND Physician = MD);
    elseif (((SELECT weekOfMonth from clinics where Physician = MD)) = "A") 
        THEN SET workTime = (SELECT ClinicTimes from clinics where Physician = MD AND `Day` = DayOfWeek(requestedDate));

    END IF;
    RETURN workTime;
    END

此处的目标是使用视图字段对自传播进行排序,因此该函数将相应地显示在视图中同一行中的日期和医生。这里的任何帮助将非常感谢!

编辑:我更改了其中一列的名称,并更改了对该列的所有引用,并收到错误1242:子查询返回的行数超过1行。

根据要求,以下是一些数据输入:

      Datetable (date datatype)           MDCodes (varchar(20) datatype)       
       |Date|                                     |Physician|
     2016-07-01                                    Doc1
     2016-07-02                                    Doc2

函数中使用的表不是问题,当单独使用时,该函数可以正常工作。

0 个答案:

没有答案