2016-11-15 17 views
1

コマンドラインまたはMySql Workbenchエディタでストアド・プロシージャを作成しようとしています。MySql:プロシージャ・エラーを作成する

Mysql WOrkbenchでは、メッセージは一切表示されませんが、エラーは発生しませんが、プロシージャは作成されません。コマンドラインmysql --host=localhost ... < procedure-script.sqlで、私は次のエラーを取得する:

ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER' at line 28

ライン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)コマンドラインからスクリプトを実行するときに、スクリプト内でタブを使用することはできますか?

+2

削除セミコロン区切りのセミコロンを削除することによって、これを試してみてください(私はエラーを持っていたとして、それらを取り除く必要がありました)。 – rocks

答えて

2

は$$最初の行区切り文字で

DELIMITER $$ 
drop procedure if exists updPages $$ 
create procedure .. 
.. 
END $$ 
DELIMITER ; 
関連する問題