итерация списка при повторных вызовах хранимой процедуры

#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-способ итерации списка строк вместо повторной установки строкового значения и последующего вызова процедуры каждый раз вручную.