次のストアドプロシージャを作成しようとしていますが、私はSPに含まれている構文エラーが発生し続けます。ここでストアドプロシージャ構文のエラーをトラブルシューティングするMySQL/MariaDB
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `test`(categoryID int, userID int)
BEGIN
DECLARE vbUserId INT DEFAULT (SELECT userfield.field6 FROM userfield WHERE userfield.field6 = userID);
DECLARE m_forumId, m_numOfPosts, m_numOfThreads, m_hasChildren, m_isPrivate INT;
DECLARE m_forumName VARCHAR(100);
DECLARE lastRow INT DEFAULT 0;
CREATE TEMPORARY TABLE tmp engine=memory AS (select forumid,replace(replace(title_clean,'&','&'),'"','') as forumName,replycount as NumOfPosts, threadcount as NumOfThreads, 0 as hasChildren, showprivate as isprivate from forum where parentid=categoryID and displayorder!=0 and options&1=1 order by displayorder);
DECLARE cur_forums CURSOR FOR select * from tmp;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET lastRow = 1;
OPEN cur_forums;
iterate_forums: LOOP
FETCH cur_forums INTO m_forumId, m_forumName, m_numOfPosts, m_numOfThreads, m_hasChildren, m_isPrivate;
IF lastRow = 1 THEN LEAVE iterate_forums;
IF (m_isPrivate = 1)
SELECT CONCAT('Private: ', m_isPrivate);
END IF
END LOOP iterate_forums;
CLOSE cur_forums;
DROP TEMPORARY TABLE IF EXISTS tmp;
END$$
は、私はDBにこれをインポートしようとすると、私は受信エラーです:
ERROR 1064 (42000) at line 2: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DECLARE cur_forums CURSOR FOR select * from tmp;
DECLARE CONTINUE HANDLER FOR N' at line 10
私はドキュメントを読んで、前のSOの質問の上に見て、また、特定の行をコメントアウトしてみました自分で実行していても、私が間違っていることはまだ分かりません。
これは、コードのこの未完成の部分には使用されていません。 :)私はあなたの答えが実際には収まらないので、全部を投稿しておくべきだった。しかし、私はしなかったので、ポイントを持っています。 – blizz