Мне было интересно, можно ли написать вставку с использованием довольно сложной логики регистра c, но не вставлять строки, если ни один из предикатов регистра не имеет значения true. Это также означает, что я не хочу вставлять ноль. Случай выбора не будет извлекать данные из таблицы
например,
DECLARE @tabErrors TABLE (errorMessage NVARCHAR(100))
DECLARE @intType INT
DECLARE @intVal INT
INSERT @tabErrors
SELECT CASE
WHEN @intType = 1 AND @intVal > 100
THEN 'Some Error'
WHEN @intType = 2 AND @intVal > 200
THEN 'Some Other Error'
ELSE <NO ROWS> END
IF SELECT COUNT(*) FROM @tabErrors = 0
-- Continue with processing
К сожалению, я не могу изменить утверждение, проверяющее счет (т.е. поместить в где errorMessage IS NOT NULL
)
Есть ли способ сделать это или я должен прибегнуть к разделению дела на несколько операторов if?