#mysql #sql #stored-procedures
#mysql #sql #хранимые процедуры
Вопрос:
В базе данных MySQL, как я могу выполнять повторные вызовы хранимой процедуры путем итерации по списку строк? Каждая строка в списке является параметром, который необходимо передавать в процедуру отдельно. Я написал ниже некоторый псевдокод, который вызывает процедуру вручную для каждой строки, но как я могу переписать его в MySQL-совместимом SQL, чтобы процедура вызывалась при каждом приращении при повторении списка строк по одной за раз?
DELIMITER $$
DROP PROCEDURE IF EXISTS `some_procedure`$$
CREATE PROCEDURE `some_procedure`(_paramname varchar(10))
BEGIN
-- code for procedure omitted for clarity of question
END$$
SET @paramname = 'cat';
CALL `some_procedure`(@paramname)$$
SET @paramname = 'dog';
CALL `some_procedure`(@paramname)$$
SET @paramname = 'lizard';
CALL `some_procedure`(@paramname)$$
SET @paramname = 'chicken';
CALL `some_procedure`(@paramname)$$
DROP PROCEDURE IF EXISTS `some_procedure`$$
Комментарии:
1. Гораздо лучше, если вы делаете это в конце приложения, чем на стороне БД.
2. @Rahul Спасибо, но это просто для того, чтобы немного покопаться в своей базе данных на этой неделе, чтобы лучше понять мои данные. Этот код не будет частью продолжительного приложения. Что самое простое, что это может быть в рабочем коде?
3. Если вы хотите делать в MySQL, то это ад… вам нужно будет разделить
,
и перебирать каждое значение и вызывать свою процедуру. скорее, если вы используете язык программирования для выполнения… это было бы довольно просто (если вы выберете, например, PHP), в Интернете есть много примеров.4. Кроме того, попробуйте выполнить откат вашего редактирования до более раннего состояния, потому что код в вашем сообщении совершенно неправильный (это сочетание синтаксиса MSSQL и MySQL).
5. @Rahul Спасибо, но это всего лишь простое исследование данных, которое не требует поиска всего материала JDBC, необходимого для его вызова из Java. Я переписал свой пост, чтобы показать способ вызова процедуры вручную каждый раз. Ручные вызовы проще, чем подход Java, но было бы чище, если бы существовал SQL-способ итерации списка строк вместо повторной установки строкового значения и последующего вызова процедуры каждый раз вручную.