[MySQL]: хранимая процедура и операторы выбора - PullRequest
5 голосов
/ 21 января 2010

Я сейчас изучаю хранимые процедуры.

Согласно этой статье (стр. 8) в разделе dev сайта mysql ...

Обычно ставить ненормально Операторы SELECT в хранимых процедуры, это для иллюстрации. Я решил, что некоторые процедуры должны просто выберите из нашей таблицы, так что при вызове процедуры это будет Очевидно, что это работает.

Почему это?

Является ли использование хранимых процедур для упрощения сложных операторов выбора не «передовой практикой»?

В каких конкретных ситуациях полезно использовать хранимую процедуру? Пример?

Ответы [ 2 ]

3 голосов
/ 21 января 2010

Конкретная ситуация, когда выгодно использовать хранимые процедуры / подпрограммы, заключается в том, что она может обеспечить проверку ошибок параметров, аналогичных функциям в парадигме ОО. Это дает добавленную «инкапсуляцию»

Простой пример:

CREATE PROCEDURE select_table(IN @id INT)
BEGIN
  IF @id < O THEN
    -- ERROR!  do something here
  ELSEIF
    SELECT * from TABLE WHERE id = @id;
  END IF
END
3 голосов
/ 21 января 2010

Обычно хранимые процедуры предназначены для сложной обработки в базе данных. Бушуют споры об их пользе. Я никогда не видел, чтобы SELECTs в хранимой процедуре были плохой вещью, но я не ожидал, что каждый отдельный оператор SQL, который должен быть написан, также входит в хранимую процедуру. Он должен быть зарезервирован для обработки, которая включает в себя несколько операторов и должна будет выполняться повторно.

Джефф рассуждает о них здесь .

Чтобы ответить на ваш прямой вопрос для конкретных примеров, я обнаружил, что избегаю их из-за проблемы переносимости. Я пытаюсь сделать все мои стороны обработки приложений. В то же время мне не нужно беспокоиться о пропускной способности сети в моем приложении, поэтому каждая ситуация различна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...