我的工作台给我一个“确定”作为输出,没有任何更多信息。 由于先前的问题,我发现问题出在子查询上。但是我不知道问题出在哪里。
这是我的代码:
**CREATE FUNCTION crew_headcount(FlightNo varchar(7), DepartureDateAndTimeUTC timestamp)
RETURNS INT
DETERMINISTIC
RETURN CASE
WHEN
FlightNo IN(flightexecution.FlightNo)
AND DepartureDateAndTimeUTC IN(flightexecution.DepartureDateAndTimeUTC)
THEN
(SELECT COUNT(crew.EmployeeID)
FROM crew, flightexecution
WHERE crew.FlightNo = flightexecution.FlightNo
AND FlightNo = flightexecution.FlightNo
AND DepartureDateAndTimeUTC = flightexecution.DepartureDateAndTimeUTC)
ELSE -1
END;**
我的目标是用函数FlightNO和DepatureTime填充函数,如果可以在可用表中找到这两个值,则应得出机组人数,否则为“ -1”。
希望有人可以帮助我。 谢谢
答案 0 :(得分:1)
除了函数执行没有问题外,我不明白为什么它会返回“ OK”。您如何在MySQL Workbench中运行该功能?什么版本的工作台?
您可以尝试重构CASE语句的WHEN部分:
new ScpColumn(name, field, undefined, type);
最终,可以将其完全重构为单个SELECT语句:
CASE
WHEN
(SELECT COUNT(*)
FROM flightexecution
WHERE flightexecution.FlightNo = FlightNo AND
flightexecution.DepartureDateAndTimeUTC = DepartureDateAndTimeUTC) > 0
THEN
(SELECT COUNT(crew.EmployeeID)
FROM crew, flightexecution
WHERE crew.FlightNo = flightexecution.FlightNo
AND FlightNo = flightexecution.FlightNo
AND DepartureDateAndTimeUTC = flightexecution.DepartureDateAndTimeUTC)
ELSE -1
END