Моя хранимая процедура возвращает несколько наборов строк, которые все связаны с одним объектом. Первый оператор select возвращает основные детали основного объекта. Он находит эту сущность с помощью предложения WHERE id = entityId
. Когда значение в entityId
не совпадает с идентификатором какой-либо из сохраненных сущностей, я хочу прервать выполнение хранимой процедуры далее.
Мне нужен способ определить, удалось ли этому запросу select что-то вернуть и я думал, что смогу достичь этого с помощью оператора IF ROW_COUNT() > 0 THEN
, но оказывается, что я могу использовать только ROW_COUNT()
для операторов insert, update, delete
. Для select
он всегда возвращает -1, независимо от результата.
Мой вопрос таков: как проще всего определить, возвращал ли последний запрос select что-нибудь? Я ищу что-то более простое, чем следующее:
- Выполните выбор счетчика перед фактическим выбором.
- вставьте запрос выбора во временную таблицу и используйте ROW_COUNT () для проверки возвращаемых строк.
Я думал о том, чтобы сначала выбрать набор строк в пользовательскую переменную, а затем проверить, является ли переменная нулевой или содержит набор строк. Если он содержит набор строк, выполните select
для этой переменной, если не отмените. Но я не знаю, будет ли это лучше.
Есть идеи?