2016-02-07 3 views
0

Пожалуйста, может кто-нибудь помочь мне изменить мой код mysql ниже?Процедура ничего не делает

Это не влияет на строки, как хотелось бы. :/ Я начинающий.

DELIMITER $$ 
DROP PROCEDURE IF EXISTS category$$ 


CREATE PROCEDURE category() 
BEGIN 
DECLARE count INT DEFAULT 877; 
DECLARE prd INT; 



WHILE count < 1040 DO 

    select product_id into prd from xxx_hikashop_product 
    where (replace(product_name, 'Model ', '') = count); 

    insert into xxx_hikashop_product_category 
    (product_category_id, category_id, product_id, ordering) 
    VALUES 
    (1445+count, 33, prd, count); 


    SET count = count + 1; 
END WHILE; 
END$$ 

DELIMITER ; 

PRINTED ERROR: 

#1064 - 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  
'select product_id from elody_hikashop_product where replace(product_alias, 
'mode' at line 7 
+0

Ой, я забыл назвать процедуру : D: D – Filip

+0

Из того, что я могу сказать, вы сравниваете результат замены функции, который является VARCHAR, с переменной count, которая является INT. – DBug

+0

В сообщении об ошибке говорится: «.... выберите product_id от elody_hikashop_product, где replace (product_alias, 'mode'', но нет такой строки в коде, который вы нам показали в вопросе. Вы действительно запускаете/компилируете процедуру из вопрос ? – krokodilko

ответ

0

Я буду считать, что поле product_alias имеет вид «Модель 888» и ваши попытки извлечь числовое значение, и сравнить его с графом. Вам нужно будет преобразовать полученную строку в число, используя:

select product_id into prd from xxx_hikashop_product 
where (convert(replace(product_name, 'Model ', ''), UNSIGNED) = count); 
0

Единственная проблема заключалась в том, что я забыл назвать процедуру: D Спасибо

Filip

Смежные вопросы