[mssql] как внутри procedure узнать что параметр dec = null ?
cлучайно нашёл в примере к if из хелпа
нада не if(@parameter = 0) а if(@parameter is null)
а можно просто SET ANSI_NULLS OFF
@param = ifnull(...,0)
@param = ifnull(...,0)что это?
select @parameter = ifnull (select blah blah blah ... from blah blah blah ... where blah blah blah ..., 0)
а вообще nullif(..,0) делает прямо противоположную задачу
а тут поможет coalesce:
@param = coalesce(...,0)
ЗЫ coalesce( список параметров ) возвращает первый элемент из списка параметров который "is not null"
ifnull (select blah blah blah ... from blah blah blah ... where blah blah blah ..., 0)судя по всему, это мускульный аналог coalesce и к стандартному nullif не имеет никакого отношения
о. в MSSQL он называется isnull
имхо, coalesce - это стандарт
первая ссылка в google: coalesce sql кстати ведет на:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ca-co_9dph.asp
(если верить этому
просто mssql довольно старый продукт, возможно isnull сделали до sql-92
или это какой-то облегченный?
что значит "стремный"?
скажем нестандартный.
а можно просто SET ANSI_NULLS OFFА можно поподробнее ? Что именно значит эта команда ?
при set ansi_nulls on условие a = null никогда не выполнится
при set ansi_nulls off условие a = null эквивалентно a is null
То есть a=b верно если они оба null? Ахуэнная идея!
Оставить комментарий
Alena_08_11
короче есть какая то procedure в которой есть :....
declare
@parameter dec(18,2
....
select
@parameter = (select blah blah blah ... from blah blah blah ... where blah blah blah ...
....
Хочется, если (select blah blah blah ... from blah blah blah ... where blah blah blah ...) ничего не возвращает, приравнять @parameter к нулю
пробовал пока только так :
....
select
@parameter = (select blah blah blah ... from blah blah blah ... where blah blah blah ...)
if(@parameter = null)
begin
select @parameter = 0
end
...
Почему то не получаеццо