当试图在mysql 5.1.47-community中创建一个简单的过程时,每次尝试所有内容时它都会失败! 甚至像这样的简单事情!
DELIMITER //
CREATE PROCEDURE two ()
begin
SELECT 1+1;
end;
//
错误是
错误:错误1064:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的“mydb”附近使用正确的语法
答案 0 :(得分:0)
您提供的错误消息与您粘贴的代码不对应。你在SQL中运行的某个地方指的是“mydb”,但是你在问题的代码中找不到它。
你给出的代码应该可以正常工作,因为我没有看到语法错误,你可能只需要给它一个数据库来处理(在这种情况下我可以使用“test
”,也许它应该是“{ {1}}“为了你?”。
mydb
但是,我怀疑你得到的错误是你的SQL中的一行,而你没有向我们展示。
修改的
它可能是DELIMITER //
CREATE PROCEDURE test.two ()
begin
SELECT 1+1;
end;
//
DELIMITER ;
CALL test.two;
命令。您将分隔符更改为delimiter
而不是默认//
。所以也许您已经运行了该命令(并将会话的分隔符更改为//),然后尝试运行;
,其中USE mydb;
不再被识别为会话的有效分隔符,这可能会给你错误。尝试将;
放在使用行之前,看看是否有帮助(然后在定义存储过程后再次使用它,以便调用它)。这只是一个理论,因为我不确定定界符命令的复杂性。
答案 1 :(得分:0)
删除最终分隔符“end”而不是“end;”
答案 2 :(得分:0)
我在使用 heidisql 作为前端输入 SQL 时遇到了同样的问题。我的第一次尝试是:
CREATE PROCEDURE Add_Two (IN someNumber int, OUT result INT)
BEGIN
SELECT someNumber +2 INTO result;
END
这导致了 SQL ERROR (1064)
,因为我不知道在使用客户端程序时需要 delimiter 来 define the stored procedures。
将上面的改成这样后:
DELIMITER //
CREATE PROCEDURE Add_Two(IN someNumber int, OUT result INT)
BEGIN
SELECT someNumber +2 INTO result;
END
//
成功了。
调用示例
SET @someNumber :=8;
CALL Add_Two(@someNumber, @result);
SELECT @result;