#sql-server #azure #loops #stored-procedures #not-exists
#sql-сервер #лазурь #петли #хранимые процедуры #не-существует
Вопрос:
Я передаю несколько параметров и получаю соответствующие результаты для запрошенного параметра. Предположим, я хочу добавить параметр для отображения сообщения, если после выполнения хранимой процедуры записи не возвращаются — как это сделать?
Комментарии:
1. Пожалуйста, покажите нам, что вы сделали до сих пор и что вы обдумали и попробовали.
2. проверьте значение
@@ROWCOUNT
после вашихselect
утверждений, чтобы проверить, возвращаются ли записи или нет, основываясь на этом значении, а затем на вашем новом входном аргументе, вы можетеraise
отправить сообщение[ не удается отобразить изображение из сохраненного процесса].3. Я бы предположил, что возвращение какого-либо сообщения «Записи не найдены» должно быть заданием для уровня приложения/представления, а не для хранимой процедуры. Попытка спуститься по
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';