Добавьте параметр для отображения сообщения, если после выполнения хранимой процедуры записи не возвращаются

#sql-server #azure #loops #stored-procedures #not-exists

#sql-сервер #лазурь #петли #хранимые процедуры #не-существует

Вопрос:

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

Комментарии:

1. Пожалуйста, покажите нам, что вы сделали до сих пор и что вы обдумали и попробовали.

2. проверьте значение @@ROWCOUNT после ваших select утверждений, чтобы проверить, возвращаются ли записи или нет, основываясь на этом значении, а затем на вашем новом входном аргументе, вы можете raise отправить сообщение[ не удается отобразить изображение из сохраненного процесса].

3. Я бы предположил, что возвращение какого-либо сообщения «Записи не найдены» должно быть заданием для уровня приложения/представления, а не для хранимой процедуры. Попытка спуститься по print raiserror throw маршруту или выполнить такую задачу из хранимой процедуры просто излишне усложняет ее , когда уровень приложения/представления может просто обнаружить «количество строк = 0» и поступить правильно.

Ответ №1:

Вы можете использовать инструкцию CASE для вывода сообщения, если записи не найдены.

Ниже приведен пример возврата количества сотрудников в каждом городе.

Данные таблицы, содержащие данные сотрудника по городу:

введите описание изображения здесь

Хранимая процедура, которая дает количество сотрудников в каждом городе и отображает сообщение, когда записи не найдены.

 CREATE PROCEDURE CheckEmployee_byCity  @City varchar(100)    AS  BEGIN  SET NOCOUNT ON;   Declare @ReturnValue Varchar(100);   SELECT @ReturnValue = case when Count(*)gt;0 then convert(varchar,count(*)) when count(*)= 0 then 'No Employees found' end  FROM [dbo].[Employees] WHERE City = @City   select @ReturnValue as 'Return value'   END  

Результат:

 EXEC CheckEmployee_byCity @city = 'London';  EXEC CheckEmployee_byCity @city = 'California';  

введите описание изображения здесь