【发布时间】:2019-01-20 01:02:48
【问题描述】:
我需要将存储过程从 MS SQL Server 语法重写为 MariaDB 标准的 MySQL。我已经为此苦苦挣扎了好几个小时。我从来没有想过会有这么多不同。有什么工具可以自动完成吗?这是存储过程的代码
CREATE PROCEDURE sp_Validate @username nvarchar(50), @email nvarchar(100) = NULL
AS
BEGIN
SELECT * INTO #tmp FROM Users WHERE Username = @username
IF((SELECT COUNT(*) FROM #tmp) < 1)
BEGIN
INSERT INTO Users(Username, Email, FirstLaunch) VALUES (@username, @email, GETDATE())
SELECT 1
END
ELSE IF(DATEDIFF(DAY, GETDATE(), (SELECT FirstLaunch FROM #tmp)) > 8)
BEGIN
UPDATE Users SET Email = @email WHERE Username = @username
SELECT 0
END
ELSE
BEGIN
UPDATE Users SET Email = @email WHERE Username = @username
SELECT 1
END
IF OBJECT_ID('#tmp') IS NOT NULL
DROP TABLE #tmp
END
它检查用户是否存在于用户表中,以及他最初登录的时间是否超过 7 天。
【问题讨论】:
-
正如您所发现的,不同品牌的数据库服务器的存储代码语言彼此之间有很大的不同。移植存储过程的最佳选择是使用相同的规范从头开始实现它们。这是供应商让客户锁定其产品的一种方式。
-
你试过了吗???发布您的代码。您是否阅读过有关如何创建 sp 的 MySQL 文档???
-
@Eric Sir,您错过了“我已经为此苦苦挣扎了好几个小时”这句话。这意味着,当我尝试从头开始重写它时,正如 O. Jones 所建议的那样,我什至无法成功编译前 5 行而没有错误。我不知道发布这 5 行错误的 MySQL 会如何改进这篇文章。
标签: mysql sql-server stored-procedures mariadb