Просто чтобы быть экстра"оборонительным", следующая версия генерирует ошибку преобразования типов, чтобы учесть возможность (хотя и маловероятную)> 1 совпадения Schema
, аналогично тому, как код проверки часто преднамеренно Бросьте Исключение, потому что я считаю, что это хорошо, и я полагаю, что это «лучшая практика» для учета всех возможных возвращаемых результатов, хотя и маловероятных, и даже если это просто для генерации фатального исключения, потому что известные эффекты остановки обработки обычно лучше, чем неизвестное каскадирование последствия незапертых ошибок. Поскольку это маловероятно, я не думал, что стоит отдельная Count
проверка + Throw
или Try
- Catch
- Throw
для создания более удобной для пользователя фатальной ошибки, но все же фатальной ошибки тем не менее.
SS 2005-:
declare @HasSchemaX bit
set @HasSchemaX = case (select count(1) from sys.schemas where lower(name) = lower('SchemaX')) when 1 then 1 when 0 then 0 else 'ERROR' end
СС 2008+:
declare @HasSchemaX bit = case (select count(1) from sys.schemas where lower(name) = lower('SchemaX')) when 1 then 1 when 0 then 0 else 'ERROR' end
Тогда:
if @HasSchemaX = 1
begin
...
end -- if @HasSchemaX = 1