我想编写一个存储过程来查找教师的加入日期,如果它是星期一,它应该显示在星期一,否则它应该显示“工作日”
tbl_teacher表是;
vchr_teacher_name dat_teacher_doj
teena 1982-01-10
lawrence 1979-09-01
mathew 1981-10-13
job 1980-11-12
我需要创建一个存储过程作为“CALL CHECK_DATE(1982-01-10)”结果如下:
day
----------
weekday
----------
我试过:
DELIMITER //
CREATE PROCEDURE check_date (IN dat date,OUT day varchar(10))
BEGIN
SELECT DAYNAME( dat ) INTO DAY FROM tbl_teachers;
END//
DELIMITER ;
它将错误显示为
#1172 - Result consisted of more than one row
如何做到这一点,发现这一天是星期一或工作日。
答案 0 :(得分:-1)
我认为您最好使用function:
DROP FUNCTION IF EXISTS `check_date` //
CREATE FUNCTION `check_date` (dat date)
RETURNS varchar(10)
BEGIN
return IF(dayname(dat) = 'Monday' , 'Monday', 'Weekday');
END //
我使用IF函数来确定是否需要返回星期一或其他(工作日)。
在教师桌上使用时,结果将是:
vchr_teacher_name check_date(`dat_teacher_doj`)
------------------------------------------------
teena Weekday
Lawrence Weekday
mathew Weekday
job Weekday
mday Monday
我有一个完整的工作sqlfiddle供你试验。