【发布时间】:2015-01-13 14:55:07
【问题描述】:
我正在尝试在 MySQL 中创建一个 try-catch 类型的存储过程:
DELIMITER $$
DROP PROCEDURE IF EXISTS `SQL_TRY_CATCH` $$
CREATE PROCEDURE `SQL_TRY_CATCH`()
BEGIN
DECLARE `_rollback` BOOL DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET `_rollback` = 1;
START TRANSACTION;
UPDATE `devices` SET
`cabinet` = '46',
`name` = 'Test Device',
`type` = 'Test Type',
`u_size` = '27',
`service_tag` = '35sdf35',
`port_1` = '10.10.1.1',
`drac` = '10.10.1.2',
`notes` = 'Notes 1',
`hd_info` = 'HD Info 2'
WHERE `id`='45';
IF `_rollback` THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END $$
DELIMITER ;
但是,我每次运行它时都会得到以下错误:
Error #1064 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本以获得正确的语法 在'附近使用'
DELIMITER $$
DROP PROCEDURE IF EXISTS `SQL_TRY_CATCH` $$
CREATE PROCEDUR
' 在第 1 行
有人可以指出我做错了什么的正确方向吗?
谢谢。
【问题讨论】:
-
您的脚本中有太多分号?尝试在 SQL_TRY_CATCH() 和 BEGIN START TRANSACTION 之后删除分号
-
去掉BEGIN后的分号
-
@Piyush 我删除了分号,但我仍然得到同样的错误。也许有太多的空白?
-
@Daniel:- 尝试修改答案
-
@Piyush 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以获取在
'DELIMITER $$ DROP FUNCTION IF EXISTS 'SQL_TRY_CATCH'; CREATE FUNCTION 'SQL' at line 1附近使用的正确语法
标签: mysql sql stored-procedures mysql-error-1064