将ms sql函数转换为mysql
我在将ms sql函数转换为mysql时遇到了一个问题。以下是ms sql函数代码:将ms sql函数转换为mysql,mysql,sql,sql-server,sql-server-2008,Mysql,Sql,Sql Server,Sql Server 2008,我在将ms sql函数转换为mysql时遇到了一个问题。以下是ms sql函数代码: CREATE FUNCTION [crewu2].[isAvailable] (@OwnerID int, @DateFrom Smalldatetime, @DateTo Smalldatetime) RETURNS bit AS BEGIN DECLARE @t bit IF @DateFrom IS NULL or @DateTo IS NULL or E
CREATE FUNCTION [crewu2].[isAvailable] (@OwnerID int, @DateFrom Smalldatetime, @DateTo Smalldatetime)
RETURNS bit AS
BEGIN
DECLARE @t bit
IF @DateFrom IS NULL or @DateTo IS NULL
or EXISTS (select DateID
from [client_BlackDates]
where OwnerID=@OwnerID
and ((DateFrom<=@DateFrom and @DateFrom<=DateTo)
or (DateFrom<=@DateTo and @DateTo<=DateTo)))
SET @t=0
ELSE
SET @t=1
RETURN @t
END
以下是mysql中的转换:
DELIMITER $$
CREATE FUNCTION isAvailable (OwnerID INT, DateFrom DATETIME, DateTo DATETIME)
RETURNS BIT
BEGIN
DECLARE t BIT;
IF DateFrom IS NULL OR DateTo IS NULL
OR EXISTS (SELECT DateID
FROM client_BlackDates
WHERE OwnerID=OwnerID
AND ((DateFrom<=DateFrom AND DateFrom<=DateTo)
OR (DateFrom<=DateTo AND DateTo<=DateTo)))
SET t=0;
ELSE
SET t=1;
RETURN t
END $$
DELIMITER;
但它给了我以下错误:
错误代码:1064
您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解可在“SET t=0”附近使用的正确语法;
其他的
设置t=1;
返回t
在第6行结束
请任何人帮我解决这个问题。这应该是你错过的工作,如果:
参考MySQL。这应该是您错过的工作,如果:
参考MySQL。查看sintax的MySQL手册
查看sintax的MySQL手册
我还能问一个函数吗?这是我的第二个函数,请看一看。。[它给了我这个错误:错误代码:1415不允许从函数返回结果集我能再问一个函数吗?这是我的第二个函数请看一下..[它给了我这个错误:错误代码:1415不允许从函数返回结果集
DELIMITER $$
CREATE FUNCTION isAvailable (OwnerID INT, DateFrom DATETIME, DateTo DATETIME)
RETURNS BIT
BEGIN
DECLARE t BIT;
IF DateFrom IS NULL OR DateTo IS NULL OR EXISTS (SELECT DateID FROM client_BlackDates WHERE OwnerID=OwnerID AND ((DateFrom<=DateFrom AND DateFrom<=DateTo) OR (DateFrom<=DateTo AND DateTo<=DateTo)))
**THEN**
SET t=0;
ELSE
SET t=1;
RETURN t;
**END IF;**
END $$
DELIMITER ;
DELIMITER //
CREATE FUNCTION isAvailable (OwnerID INT, DateFrom DATETIME, DateTo DATETIME)
RETURNS BIT
BEGIN
DECLARE t BIT;
IF DateFrom IS NULL OR DateTo IS NULL
OR EXISTS (SELECT DateID
FROM client_BlackDates
WHERE OwnerID=OwnerID
AND ((DateFrom<=DateFrom AND DateFrom<=DateTo)
OR (DateFrom<=DateTo AND DateTo<=DateTo)))
THEN
SET t = 0;
ELSE
SET t = 1;
END IF;
RETURN t;
END //
DELIMITER ;