Ahoj. Řeším aktuálně jeden problém, kdy se hodnoty v SELECT INTO neaktualizují, pokud je SELECT ve smyčce LOOP. Obě tabulky test_search_index a test_word jsou prázdné. Po spuštění této procedury je vložen jen 1 záznam do obou tabulek. Vstupní hodnotou procedury p_keywords je "Jedna|Dvě|Tři". Jsem v tomto začátečník.. nevíte, kde může být chyba? DíkyCREATE DEFINER=`a55686_vonaj`@`%` PROCEDURE `AddSearchWord2`(IN `p_keywords` VARCHAR(3000) CHARSET utf8, IN `p_idshop` INT(11), IN `p_idlang` INT(11), IN `p_idproduct` INT(11)) NOT DETERMINISTIC NO SQL SQL SECURITY DEFINER BEGIN DECLARE idword INT(11) DEFAULT 0; DECLARE word VARCHAR(500); DECLARE word_length INT(11); DECLARE has_error BOOLEAN DEFAULT 0; DECLARE check_word BOOLEAN DEFAULT 0; DECLARE word_exists BOOLEAN DEFAULT 0; DECLARE index_exists BOOLEAN DEFAULT 0; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN SET has_error = 1; SHOW ERRORS; DELETE word, ind FROM `test_search_word` AS word LEFT JOIN `test_search_index` AS ind USING(id_word) WHERE id_shop=p_idshop && id_lang=p_idlang && id_product=p_idproduct; END; add_word: LOOP IF CHAR_LENGTH(TRIM(p_keywords)) = 0 || p_keywords IS NULL || has_error THEN LEAVE add_word; END IF; SET word = SUBSTRING_INDEX(p_keywords,'|',1); SET word_length = CHAR_LENGTH(word); /* PROBLÉMOVÝ SELECT */ SELECT id_word, COUNT(*) > 0 INTO idword, word_exists FROM test_search_word WHERE word=word LIMIT 1; -- Vytvoření záznamu pro vyhledávání produktu --… IF word_exists && idword IS NOT NULL THEN SELECT COUNT(*) > 0 INTO index_exists FROM test_search_index WHERE id_word=idword && id_product=p_idproduct; ELSE INSERT INTO test_search_word (id_shop, id_lang, word) VALUES (p_idshop, p_idlang, word); SET idword = LAST_INSERT_ID(); END IF; -- zápis do dalších tabulek -- IF idword < 1 THEN SET has_error = 1; SELECT CONCAT("Vytvoření klíčového slova `", word, "` u produktu s ID (id_product) `", p_idproduct, "` se nezdařilo.") AS error, "AddSearchWord" AS procedure_name; ELSEIF !index_exists THEN INSERT IGNORE INTO test_search_index (id_product, id_word) VALUES (p_idproduct, idword); END IF; -- kontrola uložených hodnot -- IF !has_error THEN SELECT COUNT(*) > 0 INTO check_word FROM `test_search_index` AS ind LEFT JOIN `test_search_word` AS word USING(id_word) WHERE ind.id_product=p_idproduct && ind.id_word=idword && word.id_shop=p_idshop && word.id_lang=p_idlang; IF !check_word THEN SET has_error = 1; SELECT CONCAT("Vytvoření klíčového slova `", word,"` se u produktu `", p_idproduct,"` nezdařilo.") as error, "AddSearchWord" AS procedure_name; END IF; END IF; SET p_keywords = INSERT(p_keywords,1,word_length + 1,''); END LOOP; -- vrácení výstupu -- IF !has_error THEN SELECT idword AS id_word, 1 AS success; END IF; END Ukázat celý příspěvek