Mam taki problem. Chciałbym zrobić multi inserta czyli np
INSERT INTO tabela (id, nazwa) VALUES (1,'aaa'), (2,'bbb') itd.
w procedurze składowanej gdzie wartości byłyby generowane w sposób automatyczny. Niestety mysql nie chce współpracować.
Oto kod:
CREATE PROCEDURE `test`.`multiInsert`(IN userID int(11), IN sString VARCHAR(255)) BEGIN DECLARE sText VARCHAR(255) DEFAULT sString; DECLARE insertString TEXT; DECLARE cnt INT DEFAULT 0; DECLARE temp VARCHAR(255); DECLARE final_text VARCHAR(255); SET cnt = substrCount(sText,';'); WHILE cnt > 0 DO SET temp = CONCAT(userID,', ',split_str(sText,';',cnt)); SET insertString = CONCAT(insertString, '(', temp, '),'); SET cnt = cnt - 1; END WHILE; IF LENGTH(insertString) > 0 THEN DELETE FROM user_type WHERE user_id = userID; SET final_text = SUBSTRING(insertString, 1, (LENGTH(insertString)-1)); INSERT INTO user_type (user_id, type) VALUES final_text; END; END$$
Błąd wyrzuca w końcowym INSERCIE:
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 'final_text;
END;
END'
O co chodzi w procedurze? Pobrany parametr id usera np 1 oraz string z liczbami: '2;3;6;13;' ma być połączony by dać w efekcie (1,2),(1,3),(1,6),(1,13)
Wydaje mi się, że WHILE dobrze wykonuje swoje zadanie, ale jak teraz ten string wrzucić jako VALUES ?