Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 try catch для отлова пустого запроса  [new]
Vijis
Member

Откуда:
Сообщений: 3
Имеется вот такой запрос. По фамилии выдаёт все анализы пациента. Мне нужна выдать ошибку в том случае, если результатом работы является пустая таблица (например когда такого пациента нет и следовательно никаких анализов у него тоже нет). Как отловить эту ситуацию? По заданию обязательно нужно использовать конструкцию try catch
CREATE PROCEDURE Pat
@fname VARCHAR(50),
@sname VARCHAR(50),
@mname VARCHAR(50) NULL
AS
BEGIN
  BEGIN TRY
    BEGIN TRANSACTION
SELECT Patient.Second_name, Patient.First_name, Patient.Middle_name, Examination.Name_examination, Laboratory.Name_lab, MedTest.Result FROM
(((Patient INNER JOIN MedTest ON Patient.ID_Patient = MedTest.ID_Patient)
	INNER JOIN Examination ON MedTest.ID_Examination = Examination.ID_Examination)
	INNER JOIN Laboratory ON MedTest.ID_Lab = Laboratory.ID_Lab)
	WHERE Patient.First_name = @fname AND 
	Patient.Second_name = @sname AND 
	Patient.Middle_name = @mname
    COMMIT TRANSACTION
  END TRY
  BEGIN CATCH
	IFPRINT 'error'
  END CATCH 
END
30 май 17, 23:10    [20525598]     Ответить | Цитировать Сообщить модератору
 Re: try catch для отлова пустого запроса  [new]
Rankatan
Member

Откуда:
Сообщений: 250
if @rowcount =0 RAISEERROR('ERROR',11)
31 май 17, 00:41    [20525749]     Ответить | Цитировать Сообщить модератору
 Re: try catch для отлова пустого запроса  [new]
Vijis
Member

Откуда:
Сообщений: 3
Rankatan, выдаёт неверный синтаксис после @@ROWCOUNT
31 май 17, 00:45    [20525757]     Ответить | Цитировать Сообщить модератору
 Re: try catch для отлова пустого запроса  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
Vijis
Rankatan, выдаёт неверный синтаксис после @@ROWCOUNT
Ну так сделайте верный синтаксис.
31 май 17, 01:18    [20525789]     Ответить | Цитировать Сообщить модератору
 Re: try catch для отлова пустого запроса  [new]
Rankatan
Member

Откуда:
Сообщений: 250
Vijis
RAISEERROR('ERROR',11,1)
31 май 17, 01:21    [20525792]     Ответить | Цитировать Сообщить модератору
 Re: try catch для отлова пустого запроса  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
Rankatan
Vijis
RAISEERROR('ERROR',11,1)
Оператор не так пишется.
31 май 17, 01:22    [20525794]     Ответить | Цитировать Сообщить модератору
 Re: try catch для отлова пустого запроса  [new]
aleks2
Guest
Гавриленко Сергей Алексеевич
Rankatan
Vijis
RAISEERROR('ERROR',11,1)
Оператор не так пишется.

И raiserror не сканает в try.

THROW надо.
31 май 17, 06:12    [20525850]     Ответить | Цитировать Сообщить модератору
 Re: try catch для отлова пустого запроса  [new]
Vijis
Member

Откуда:
Сообщений: 3
aleks2, а как его использовать? Никогда не пользовался конструкцией try catch в sql, не знаю что там да как. Можете подсказать?
31 май 17, 07:19    [20525870]     Ответить | Цитировать Сообщить модератору
 Re: try catch для отлова пустого запроса  [new]
o-o
Guest
aleks2
И raiserror не сканает в try.

begin try
   RAISERROR('privet aleks2', 16, 1);
end try

begin catch
   select ERROR_MESSAGE();
end catch
31 май 17, 07:33    [20525884]     Ответить | Цитировать Сообщить модератору
 Re: try catch для отлова пустого запроса  [new]
MSSQLAndDotNet
Member

Откуда:
Сообщений: 10398
https://msdn.microsoft.com/ru-ru/library/ee677615.aspx
31 май 17, 09:53    [20526161]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить