· 9 years ago · Jan 01, 2017, 08:49 PM
1DELIMITER $$
2CREATE DEFINER=`root`@`%` PROCEDURE `test`(categoryID int, userID int)
3BEGIN
4 DECLARE vbUserId INT DEFAULT ( SELECT userfield.field6 FROM userfield WHERE userfield.field6 = userID );
5 DECLARE m_forumId, m_numOfPosts, m_numOfThreads, m_hasChildren, m_isPrivate INT;
6 DECLARE m_forumName VARCHAR(100);
7 DECLARE lastRow INT DEFAULT 0;
8
9 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);
10
11 DECLARE cur_forums CURSOR FOR select * from tmp;
12 DECLARE CONTINUE HANDLER FOR NOT FOUND SET lastRow = 1;
13 OPEN cur_forums;
14 iterate_forums: LOOP
15 FETCH cur_forums INTO m_forumId, m_forumName, m_numOfPosts, m_numOfThreads, m_hasChildren, m_isPrivate;
16 IF lastRow = 1 THEN LEAVE iterate_forums;
17 IF (m_isPrivate = 1)
18 SELECT CONCAT('Private: ', m_isPrivate);
19 END IF
20 END LOOP iterate_forums;
21 CLOSE cur_forums;
22 DROP TEMPORARY TABLE IF EXISTS tmp;
23
24END$$
25
26ERROR 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;
27 DECLARE CONTINUE HANDLER FOR N' at line 10