【发布时间】:2014-09-23 13:21:31
【问题描述】:
我正在运行 Workbench 5.2.47。
我写了一个很长的程序,用于基本数据检查。如果数据库中不存在记录,则插入该记录。
程序保存没有问题,但是当我尝试运行它时 MySQL 5.5 抛出错误。
它很长,里面有很多公司敏感数据,或者我会在这里发布。
我正在尝试通过执行一小段代码来调试该过程,但我似乎无法让 Workbench 允许我尝试的任何操作。
MySQL 展示了如何在5.1.5 Working with Stored Procedures 中创建存储过程。
让我向您展示一些我正在尝试编写的非常基本的东西:
DELIMITER $$
DROP PROCEDURE IF EXISTS my_test;
CREATE PROCEDURE my_test()
BEGIN
SELECT * FROM Employees;
END $$
DELIMITER ;
这样,Workbench 给了我错误,“语法错误,意外 CREATE,期待 $end”。
我不明白,但我需要完成一些事情,所以我继续前进。
我做一个更简单的查询:
SET @Count=(SELECT Count(*) FROM tbl_object_users WHERE username='jp2code');
IF (@Count < 1) THEN
INSERT INTO tbl_object_users (username, date_time) VALUES ('jp2code', NOW());
END IF;
我再次收到一个错误,这次是在我的 IF 语句中。
接下来,我进入 PhpMyAdmin 尝试使用它的数据库从那里运行一些东西:
SET @Count=Count(id) FROM `tbl_object_users` WHERE `username`='jp2code';
它也告诉我我的 SQL 语法有错误。
我确实下载并安装了最新的 Workbench 6,但它并没有解决问题 - 而且我不喜欢这个界面,所以我将其卸载并返回到 Workbench 5.2。
发生了什么事? SQL 并不难,那么这些障碍是怎么回事?
【问题讨论】:
-
您不能在过程之外使用
IF。 -
但是在那个截图中,你可以看到它甚至不会让我
CREATE PROCEDURE my_test()。我错过了一些基本的东西吗? -
@jp2code:你缺少一些基本的东西。您告诉 MySQL 语句将以分号以外的方式终止,然后您尝试使用分号来终止语句。看我的回答。
标签: mysql phpmyadmin mysql-workbench