IF ELSE - захватить, если возвращено 0 строк - PullRequest
0 голосов
/ 13 сентября 2018

Пожалуйста, см. Фиктивный запрос ниже, если 1 недопустим. Я хочу, чтобы возвращалось сообщение «1 не существует», но если 1 является допустимым значением и может быть возвращено 0 строк, скажем, для заданного дня, я хочу другое сообщение об ошибке например, '2', это возможно?

DECLARE @1 
DECLARE @Date

SET @1 
SET @Date

IF @1 IN SELECT A FROM Table

SELECT

-- *Run Query here* - Would like if 0 rows a message to also appear here. 

ELSE 

'1 does not exist'

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Для T-SQL:

DECLARE @1 int; // declare types
DECLARE @Date DATE;
SET @1 = 0; // set value
SET @Date = '2018-09-13';
IF @1 IN (SELECT A FROM table)
SELECT
-- *Run Query here* - Would like if 0 rows a message to also appear here. 
ELSE     
select '1 does not exist';
0 голосов
/ 13 сентября 2018

Если я правильно понял ваш вопрос, вам нужна логика, подобная этой:

declare @valueToFind nvarchar(10) = 'something'
, @date DateTime = '2018-01-01'

if exists (select top 1 1 from TablelistingValidValues where AValue = @value)
begin
    if exists (select top 1 1 from TableWithActualData where AValue = @value and ADate = @date)
    begin 
        select * 
        from TableWithActualData 
        where AValue = @value 
        and ADate = @date
    end
    else
    begin
        throw 50001, 'The record does not exist on the given date.', 1  
    end
end
else
begin 
    throw 50000, 'The record does not exist / AValue is invalid.', 1  
end

т.е.

  • У вас есть переменная, содержащая некоторое значение.
  • У вас есть другая переменная, содержащая дату.
  • Если это значение появляется в определенной справочной таблице, оно считается действительным.
  • Если значение недопустимо (не отображается в таблице поиска), мы выдаем ошибку.
  • Если значение появляется, вы хотите выбрать все записи с этим значением на указанную дату.
  • Если есть записи для этого значения / даты, вы хотите их вернуть
  • Если нет подходящих записей, вы хотите выдать другую ошибку.

Примечание: 50000/50001 - номера ошибок, которые вы можете определить; то есть, чтобы в каждом месте, где вы выдавали ошибку, у вас был уникальный номер. Как правило, я полагаюсь больше на сообщение, чтобы дать информативную информацию; но номер тоже может быть полезным.

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