Hi I’m having problems getting this to work in mysql.
DELIMITER $$
DROP PROCEDURE IF EXISTS `insert_v5tag_count` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_v5tag_count`(IN call_tag_id INT,IN rel_tag_id VARCHAR(100),IN inp_object_id VARCHAR(100),IN level_num VARCHAR(100))
BEGIN
DECLARE done2 INT;
DECLARE i_tag_id2 INT;
DECLARE i_tag_id3 INT;
DECLARE ins_query2 VARCHAR(500);
DECLARE level_num2 INT;
DECLARE not_tag_id VARCHAR(500);
DECLARE tag_cur2 CURSOR FOR
SELECT tag_id FROM tagsV5_objects WHERE `object_type` = 6 AND `object_id` = inp_object_id AND `tag_id` != 0 AND `tag_id` != call_tag_id AND `tag_id` NOT IN(rel_tag_id);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done2=1;
OPEN tag_cur2;
tag_loop2:LOOP
FETCH tag_cur2 INTO i_tag_id2;
IF done2=1 THEN
LEAVE tag_loop2;
END IF;
SET ins_query2 = concat('insert into tagsV5_count SET tag_id = ',i_tag_id2,',level ="',level_num,'",object_type = 6,relationship_tag_id = "',call_tag_id,'",count = 1 ON DUPLICATE KEY UPDATE count = count + 1;');
# select ins_query;
set @ins_query2=ins_query2;
PREPARE ins_query2 from @ins_query2;
EXECUTE ins_query2;
SET level_num2 = level_num + 1;
SET not_tag_id = CONCAT(rel_tag_id,',');
SET not_tag_id = CONCAT(not_tag_id,i_tag_id2);
CALL insert_v5tag_count(i_tag_id2,not_tag_id,inp_object_id,level_num2);
END LOOP;
CLOSE tag_cur2;
END $$
DELIMITER ;
SET @@session.max_sp_recursion_depth = 100;
CALL insert_v5tag_count(0,1,1509410,1);
The basic reason being is that not_tag_id doesn’t want to concat and pass to the next function, any ideas would be great. Cos I’m just basing my face into the keyboard at the moment.
Thanks for your help.
Richard
1 Answer