В Mysql Как определить размер строки, возвращенной предыдущим запросом выбора в хранимой процедуре? - PullRequest
0 голосов
/ 23 апреля 2020

Моя хранимая процедура возвращает несколько наборов строк, которые все связаны с одним объектом. Первый оператор select возвращает основные детали основного объекта. Он находит эту сущность с помощью предложения WHERE id = entityId. Когда значение в entityId не совпадает с идентификатором какой-либо из сохраненных сущностей, я хочу прервать выполнение хранимой процедуры далее.

Мне нужен способ определить, удалось ли этому запросу select что-то вернуть и я думал, что смогу достичь этого с помощью оператора IF ROW_COUNT() > 0 THEN, но оказывается, что я могу использовать только ROW_COUNT() для операторов insert, update, delete. Для select он всегда возвращает -1, независимо от результата.

Мой вопрос таков: как проще всего определить, возвращал ли последний запрос select что-нибудь? Я ищу что-то более простое, чем следующее:

  • Выполните выбор счетчика перед фактическим выбором.
  • вставьте запрос выбора во временную таблицу и используйте ROW_COUNT () для проверки возвращаемых строк.

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

Есть идеи?

1 Ответ

0 голосов
/ 23 апреля 2020

Если первый выбор возвращает только одну строку и содержит относительно небольшое количество столбцов (mabye ID, Name et c), тогда проще использовать локальные переменные (DECLARE). В противном случае выберите в таблице temp.

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