gpt4 book ai didi

mysql - 将 MSSQL 存储过程传输到 MySQL

转载 作者:行者123 更新时间:2023-11-30 23:00:56 27 4
gpt4 key购买 nike

我有一个 MSSQL 存储过程如下:-

CREATE PROCEDURE [dbo].[user_CheckEMail]
@Email nvarchar(200)
AS
BEGIN

IF EXISTS (SELECT * FROM user_Data WHERE EMail = @Email)
BEGIN
RETURN 1
END
ELSE
BEGIN
RETURN 0
END

END

在改用 MySQL 的过程中,我知道某些事情需要改变。这就是我所拥有的:-

CREATE PROCEDURE server.`user_CheckEMail`(
IN Email nvarchar(200))
BEGIN

DECLARE this_count int;
SET this_count = (SELECT COUNT(*) FROM user_Data WHERE EMail = Email)

IF (this_count > 0) THEN
RETURN 1
ELSE
RETURN 0
END IF

END

在此状态下,“int”以“语法错误,意外的 END_OF_INPUT,期待‘;’”突出显示

通过删除“;” Declare 行丢失了它的错误,但 Set 行现在显示“语法错误,意外的 SET,期待 ';'”

如果我完全删除 Declare 语句,Set 行没问题,If 行返回“语法错误,意外 IF,期待 ';'”

最后,通过放置 ';'在 Set 语句的末尾,Set 返回错误“语法错误,意外的 END_OF_INPUT,期待';'”,而 If 现在错误“语法错误,意外的 IF”

我知道这只是一个基本过程,但我有大约两打要移动并且都显示错误,所以我希望找出我在这里做错了什么,我将能够治愈所有问题......希望。

最佳答案

试试这个-

DELIMITER $$

CREATE PROCEDURE server.`user_CheckEMail`(
IN Email nvarchar(200))
BEGIN



DECLARE this_count int;
SET this_count = (SELECT COUNT(*) FROM user_Data WHERE EMail = Email);

IF (this_count > 0) THEN
RETURN 1
ELSE
RETURN 0
END IF;

END$$

默认情况下,MySQL 将分号 (;) 视为语句终止符或语句结尾。但是因为我们需要在过程体内部使用它,所以我们需要另一个不同的定界符来声明存储过程的结束。这里 DELIMITER $$$$ 设置为语句终止符。

关于mysql - 将 MSSQL 存储过程传输到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24035198/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com