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

Откуда:
Сообщений: 19
Господа, помогите!
Не могу разобраться с проблемой следующего плана:

declare
@begin_date varchar(50),
@cnt1 int ,
@cnt int ;

set @cnt = 10;
set @cnt1 = 0;
select @cnt1 = sum(tran_qty) from t_tran_log;
set @cnt = @cnt + @cnt1;

так вот, после выполнения селекта в @cnt1 пишется null, после чего значение в @cnt становится тоже null. как обойти эту проблему? можно ли при объявлении переменных указать, что они не будут null???
25 июн 09, 19:24    [7344992]     Ответить | Цитировать Сообщить модератору
 Re: Запись null в int-переменную.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
set @cnt = @cnt + isnull(@cnt1, 0);
25 июн 09, 19:25    [7345000]     Ответить | Цитировать Сообщить модератору
 Re: Запись null в int-переменную.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Null пишется потому, что наверное select sum(tran_qty) from t_tran_log возвращает Null
25 июн 09, 19:27    [7345002]     Ответить | Цитировать Сообщить модератору
 Re: Запись null в int-переменную.  [new]
Hellner
Member

Откуда:
Сообщений: 19
Glory
Null пишется потому, что наверное select sum(tran_qty) from t_tran_log возвращает Null


да, все верно так и есть. просто это в моем случае может произойти. задача - обойти этот момент.
25 июн 09, 19:31    [7345011]     Ответить | Цитировать Сообщить модератору
 Re: Запись null в int-переменную.  [new]
tsyoma
Member

Откуда:
Сообщений: 31
аналогично
select @cnt1 =  sum(ISNULL(tran_qty,0)) from t_tran_log
25 июн 09, 19:33    [7345013]     Ответить | Цитировать Сообщить модератору
 Re: Запись null в int-переменную.  [new]
Hellner
Member

Откуда:
Сообщений: 19
tsyoma,


Спасибо огромное!
25 июн 09, 19:35    [7345017]     Ответить | Цитировать Сообщить модератору
 Re: Запись null в int-переменную.  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
tsyoma, тут такое дело...
sum может вернуть null еще и в случае когда ни одной записи нету в таблице:
declare @t table(s int)

select sum(s) as result from @t

result
-----------
NULL

(1 row(s) affected)
25 июн 09, 19:36    [7345020]     Ответить | Цитировать Сообщить модератору
 Re: Запись null в int-переменную.  [new]
tsyoma
Member

Откуда:
Сообщений: 31
Согласен но думаю Hellner догадается проверить на изнул и @cnt1
но скорей всего для этого должны предприниматься другие действия
и если вдаваться в подробноси то было бы лучше наверно так
select @cnt1 =  sum(tran_qty) from t_tran_log where tran_qty is not null
но это уже лирика :)
25 июн 09, 19:43    [7345031]     Ответить | Цитировать Сообщить модератору
 Re: Запись null в int-переменную.  [new]
Hellner
Member

Откуда:
Сообщений: 19
tsyoma
аналогично
select @cnt1 =  sum(ISNULL(tran_qty,0)) from t_tran_log


вот так все проходит замечательно:
select @cnt1 = isnull(sum(tran_qty),0) from t_tran_log
26 июн 09, 16:01    [7349042]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить