Chcę utworzyć procedurę składowaną, która akceptuje wszystkie wartości w parametrze IN jako pojedynczy ciąg.Procedura przechowywana MySQL, która akceptuje ciąg o wielu parametrach
DELETE FROM object
WHERE Type NOT IN
('ListGrid',
'TextField',
'SpinBox',
'MenuButton',
'ListGrid',
'RadioButton',
'DropDown',
'PopUp',
'Element',
'Checkbox',
'TreeDropDown',
'TblColumn',
'Button',
'Link',
'Filter',
'TblRow',
'GridRow',
'Popup')
Jest to przykład jednego próbowałem, ale to nie działa.
DELIMITER //
CREATE PROCEDURE deleteObjectTypes(IN p_type VARCHAR(255))
BEGIN
SET @query = CONCAT ('DELETE FROM object WHERE Type NOT IN (',p_type,')');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
pojawia się następujący błąd:
#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 ''List)' at line 1
Po uruchomieniu tej kwerendy:
CALL deleteObjectTypes("'ListGrid1','TextField1','SpinBox1','MenuButton1','ListGrid2','TextField2','SpinBox2','MenuButton2','ListGrid3','TextField3','SpinBox3','MenuButton3','ListGrid4','TextField4','SpinBox4','MenuButton4','ListGrid5','TextField5','SpinBox5','MenuButton5','ListGrid6','TextField6','SpinBox6','MenuButton6'")
czy komunikat o błędzie podczas uruchamiania tego? – Malachi
Po aktualizacji, patrz edycja. – Colin747
Błąd nie pasuje do żadnej części dostarczonego do tej pory kodu. ale wygląda na to, że możesz mieć dodatkowe '' 'w tym miejscu. – Malachi