MySql:创建过程错误

时间:2016-11-15 14:59:43

标签: mysql stored-procedures

我正在尝试在命令行或MySql Workbench编辑器中创建存储过程。

在Mysql WOrkbench中我根本没有消息,没有成功没有错误,但是没有创建过程。在命令行mysql --host=localhost ... < procedure-script.sql中,我收到以下错误:

  

第4行的错误1064(42000):您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以便在第28行的“DELIMITER”附近使用正确的语法

第28行实际上是空的,但我猜它是指第31行的最后DELIMITER ;。这是完整的代码:

DELIMITER $$;
-- drop procedure if exists updPages$$

CREATE PROCEDURE updPages()
BEGIN
DECLARE _post_id INTEGER;
DECLARE cur_pages CURSOR FOR 
select ID 
from wp_posts 
where post_type='page' and ID not in (select post_id from wp_postmeta); 

OPEN cur_pages;

Reading_Pages: LOOP
FETCH cur_pages INTO _post_id;
IF done THEN
LEAVE Reading_Pages;
END IF;

insert into wp_postmeta(post_id, meta_key, meta_value)
values (_post_id, '_wp_page_template', 'default'),
(_post_id, 'upside-show-page-title', '1'),
(_post_id, 'upside-show-breadcrumb', '1'),
(_post_id, 'upside-page-show-document-search', '0'),
(_post_id, 'upside-show-page-title-middle', 'false'),
(_post_id, '_vc_post_settings', 'a:1:{s:10:"vc_grid_id";a:0:{}}');
END LOOP;

CLOSE cur_pages;
END$$
DELIMITER ;

(1)有错误吗? (2)你知道如何在Mysql Workbench中显示编译错误吗?另外,(3)从命令行运行脚本时,我可以在脚本中使用tab吗? (因为我有错误,我不得不把它们剥掉)

1 个答案:

答案 0 :(得分:2)

通过从分隔符

中删除分号来尝试此操作
DELIMITER $$
drop procedure if exists updPages $$
create procedure ..
..
END $$
DELIMITER ;