我有一个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 line就可以了,If行返回“语法错误,意外IF,期待';'”
最后,放置';'在Set语句的末尾,Set返回错误“语法错误,意外的END_OF_INPUT,期待';'”,而If now errors“语法错误,意外的IF”
我知道这只是一个基本的程序,但我有大约二十几个要移动,所有都显示错误,所以我希望找到我在这里做错了什么,我将能够治愈所有问题.....希望。
答案 0 :(得分:0)
试试这个 -
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 $$
将$$
设置为语句终止符。