Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
BlackRainBow
Member

Откуда:
Сообщений: 8
Доброго времени суток. Возникла такая проблема - выдается вот такое сообщение об ошибке. Текст процедуры:


ALTER PROCEDURE spAddTovToDocPrd
@iDocID integer, -- Идентификатор документа
@iTovID integer, -- Идентификатор товара
@nKol numeric(15,3) output, -- Количество
@lRez bit output -- 0 в случае ошибки, 1 - в остальных случаях.
AS
-- Процедура добавляет строку в передаточный документ с проверкой остатков
declare @nCurKol numeric(15,3) -- остаток текущей партии (см. цикл)
declare @nKolSum numeric(15,3) -- текущий остаток запрашиваемого товара
declare @iPrtID integer -- идентификатор партии
declare @cErrMess varchar(512) -- описание ошибки
declare @iOrgID integer -- идентификатор организации
declare @iOtdID integer -- идентификатор отпускающего отдела
declare @yCena money -- приходная цена партии

--сколько числится
select @iOrgID=iOrgOtpID, @iOtdID=iOtdOtpID from dbo.documents where iDocID=@iDocID

select @nKolSum = isnull(sum(t.nkolsum), 0)-isnull(sum(o.nkolsum), 0) from dbo.tvotdost t
left join dbo.TvOtdDetRash o on o.iOtdID=t.iOtdID and o.iTovID=t.iTovID
where t.iOtdID = @iOtdID and t.nkolsum > 0 and t.iTovID = @iTovID

if @nKol > @nKolSum
begin
set @cErrMess = 'Товара числится меньше запрашиваемого количества.'
set @nKol = @nKolSum
set @lRez = 0
raiserror(@cErrMess, 16, 1)
return 1
end
else
--не интересно )

Ошибка выдается при исполнении команды raiserror(@cErrMess, 16, 1)

Кто сталкивался и как это победить ?
14 июл 06, 12:11    [2880785]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
pavel73
Member

Откуда:
Сообщений: 804
BlackRainBow
Доброго времени суток. Возникла такая проблема - выдается вот такое сообщение об ошибке. Текст процедуры:


ALTER PROCEDURE spAddTovToDocPrd
@iDocID integer, -- Идентификатор документа
@iTovID integer, -- Идентификатор товара
@nKol numeric(15,3) output, -- Количество
@lRez bit output -- 0 в случае ошибки, 1 - в остальных случаях.
AS
-- Процедура добавляет строку в передаточный документ с проверкой остатков
declare @nCurKol numeric(15,3) -- остаток текущей партии (см. цикл)
declare @nKolSum numeric(15,3) -- текущий остаток запрашиваемого товара
declare @iPrtID integer -- идентификатор партии
declare @cErrMess varchar(512) -- описание ошибки
declare @iOrgID integer -- идентификатор организации
declare @iOtdID integer -- идентификатор отпускающего отдела
declare @yCena money -- приходная цена партии

--сколько числится
select @iOrgID=iOrgOtpID, @iOtdID=iOtdOtpID from dbo.documents where iDocID=@iDocID

select @nKolSum = isnull(sum(t.nkolsum), 0)-isnull(sum(o.nkolsum), 0) from dbo.tvotdost t
left join dbo.TvOtdDetRash o on o.iOtdID=t.iOtdID and o.iTovID=t.iTovID
where t.iOtdID = @iOtdID and t.nkolsum > 0 and t.iTovID = @iTovID

if @nKol > @nKolSum
begin
set @cErrMess = 'Товара числится меньше запрашиваемого количества.'
set @nKol = @nKolSum
set @lRez = 0
raiserror(@cErrMess, 16, 1)
return 1
end
else
--не интересно )

Ошибка выдается при исполнении команды raiserror(@cErrMess, 16, 1)

Кто сталкивался и как это победить ?


А где текст ошибки?
14 июл 06, 12:15    [2880821]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 35965
Это не ошибка, а варнинг. И не должна выдаваться при raiserror'е.
14 июл 06, 12:16    [2880827]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
Noskov
Member

Откуда: Москва
Сообщений: 394
Выдает сообщение не raiserror, а select. Переведи его на русский и сразу станет все понятно.
14 июл 06, 12:22    [2880867]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
BlackRainBow
Member

Откуда:
Сообщений: 8
1. Текст ошибки в названии темы. Процитирую еще раз
Warning: Null value is eliminated by an aggregate or other SET operation.

2.Не должно понятное дело, но выдается. Факты вещь упрямая.. :-)
14 июл 06, 12:23    [2880870]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 35965
BlackRainBow
1. Текст ошибки в названии темы. Процитирую еще раз
Warning: Null value is eliminated by an aggregate or other SET operation.

Еще раз: это не ошибка.
BlackRainBow

2.Не должно понятное дело, но выдается. Факты вещь упрямая.. :-)

"Часто на проверку очевидные факты оказываются не только неочевидными, но и не фактами вовсе." (с) не мой.
14 июл 06, 12:25    [2880889]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2788
Переделай на:
sum(isnull(t.nkolsum,0))-sum(isnull(o.nkolsum,0))
14 июл 06, 12:26    [2880890]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
BlackRainBow
Member

Откуда:
Сообщений: 8
Не селект, а раизеррор. По шагам проходил процедуру, комментировал райзеррор - все говорит о том что на нем такая ошибка или ворнинг вылетает. И неважно что это такое - потому что в адо вместо 50000 ошибки возвращается 8153. И естественно клиент работает не так как надо.
14 июл 06, 12:26    [2880894]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
BlackRainBow
Member

Откуда:
Сообщений: 8
Prolog
Переделай на:
sum(isnull(t.nkolsum,0))-sum(isnull(o.nkolsum,0))


Да, благодарю, проблема была в этом. Просто варнинг не прерывает выполнения процедуры, а адо потом берет первое сообщение и показывает.
Не выспался и туплю теперь ))
14 июл 06, 12:29    [2880916]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
RENaissance
Member

Откуда: Муром->Москва
Сообщений: 10894

Делается еще проще!
SET ANSI_WARNINGS OFF



Posted via ActualForum NNTP Server 1.3

14 июл 06, 13:03    [2881136]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 35965
RENaissance

Делается еще проще!
SET ANSI_WARNINGS OFF


Posted via ActualForum NNTP Server 1.3

Не всегда может подойти. Да и потом, мое imho, лучше избавляться от причины варнингов, а не гасить их.
14 июл 06, 13:29    [2881309]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 49866
Сорри за некропостинг

Это сообщение кому-то когда-то помогло в работе?
И в каких ситуациях?


С уважением, Андрей
25 янв 18, 15:12    [21138689]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5891
andreymx
Сорри за некропостинг

Это сообщение кому-то когда-то помогло в работе?
И в каких ситуациях?


С уважением, Андрей

соц. опрос? или какой вообще смысл?
25 янв 18, 15:18    [21138720]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
Гигабайт Мегабайтович Килобайтов
Member [заблокирован]

Откуда:
Сообщений: 5975
TaPaK, andreymx начинающий в ms sql
Что конкретно тебя интересует с этим варнингом? ))
25 янв 18, 16:01    [21138904]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 49866
Гигабайт Мегабайтович Килобайтов
TaPaK, andreymx начинающий в ms sql
да, спасибо за понимание

Гигабайт Мегабайтович Килобайтов
Что конкретно тебя интересует с этим варнингом? ))
эксель слетел, когда в данных налл появился
приходится давить или isnull писать

вот и думаю - в чём его ценность такого сообщения. Хоть кому-то оно помогло? Тогда будет не так обидно :)
25 янв 18, 16:14    [21138951]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5891
andreymx,

а эксель при чём?
"давить" это как?

По сабжу сообщение при группировке, так что если в данных есть, а её нет, то давить
25 янв 18, 16:16    [21138968]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 49866
TaPaK
andreymx,

а эксель при чём?
"давить" это как?

По сабжу сообщение при группировке, так что если в данных есть, а её нет, то давить
эксель при работе через АДО воспринимает месседж как ошибку и оказывается работать дальше
25 янв 18, 16:24    [21139003]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5891
andreymx,

2881136
25 янв 18, 16:27    [21139019]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 49866
TaPaK
andreymx,

2881136
это я и сделал
но не чувствую, где оно еще нагадит
25 янв 18, 16:30    [21139037]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5891
andreymx
TaPaK
andreymx,

2881136
это я и сделал
но не чувствую, где оно еще нагадит

какой нечувствительный...
тогда ISNULL()
25 янв 18, 16:32    [21139053]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6188
В целом, наличие NULL при агрегировании говорит о каких-то косяках в архитектуре.
Можно его солидолом смазать, но задуматься стоит.
26 янв 18, 19:02    [21142624]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 49866
Владислав Колосов
В целом, наличие NULL при агрегировании говорит о каких-то косяках в архитектуре
с 2003-го пишу запросы, но первый раз такое слышу
26 янв 18, 19:57    [21142682]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8475
Тока что заюзал
PS реально заюзал "SET ANSI_WARNINGS OFF" - сообщение просто мешает ...
7 фев 19, 05:37    [21803182]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3526
юзайте оракл хлопцы..... он на такие варниги болт клал
7 фев 19, 09:48    [21803233]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
iap
Member

Откуда: Москва
Сообщений: 46590
SIMPLicity_
Тока что заюзал Картинка с другого сайта.
PS реально заюзал "SET ANSI_WARNINGS OFF" - сообщение просто мешает ...
Бывают ситуации (довольно часто), когда ТРЕБУЕТСЯ ANSI_WARNINGS ON !
И как вы тогда выйдете из положения?
Заменяйте NULL внутри агрегатных функций на 0 - это реально помогает.
7 фев 19, 10:02    [21803246]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
iap
Member

Откуда: Москва
Сообщений: 46590
iap
SIMPLicity_
Тока что заюзал Картинка с другого сайта.
PS реально заюзал "SET ANSI_WARNINGS OFF" - сообщение просто мешает ...
Бывают ситуации (довольно часто), когда ТРЕБУЕТСЯ ANSI_WARNINGS ON !
И как вы тогда выйдете из положения?
Заменяйте NULL внутри агрегатных функций на 0 - это реально помогает.
А COUNT(<выражение>) заменять на SUM(CASE WHEN <выражение> IS NULL THEN 0 ELSE 1 END)
7 фев 19, 10:16    [21803257]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 49866
Менять в AVG null на ноль - извращение результата
7 фев 19, 10:51    [21803295]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
iap
Member

Откуда: Москва
Сообщений: 46590
andreymx
Менять в AVG null на ноль - извращение результата
Сначала надо понять, а какой смысл в вычислении среднего с участием строк с неизвестным значением (NULL).
Может, это будет извращение извращения?
7 фев 19, 11:55    [21803371]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 49866
iap,

да то оно да
но и просто вставлять isnull так себе решение
select avg("зарплата"),
       avg("надбавка"),
       avg(isnull("надбавка", 0))
  from(
select 1. "зарплата", 1. "надбавка"
union all
select 2. "зарплата", null "надбавка"
) a
(No column name)(No column name)(No column name)
1.5000001.0000000.500000
7 фев 19, 12:18    [21803380]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
iap
Member

Откуда: Москва
Сообщений: 46590
andreymx
iap,

да то оно да
но и просто вставлять isnull так себе решение
select avg("зарплата"),
       avg("надбавка"),
       avg(isnull("надбавка", 0))
  from(
select 1. "зарплата", 1. "надбавка"
union all
select 2. "зарплата", null "надбавка"
) a

(No column name)(No column name)(No column name)
1.5000001.0000000.500000
Можно ещё попробовать делить сумму на разный count(). Тоже развлечение.
7 фев 19, 12:28    [21803391]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8475
iap
SIMPLicity_
Тока что заюзал Картинка с другого сайта.
PS реально заюзал "SET ANSI_WARNINGS OFF" - сообщение просто мешает ...
Бывают ситуации (довольно часто), когда ТРЕБУЕТСЯ ANSI_WARNINGS ON !
И как вы тогда выйдете из положения?
Заменяйте NULL внутри агрегатных функций на 0 - это реально помогает.


Согласен. Но ноги-то растут не от того, что "null" а не 0 ... В данной ситуации он реально мне "не упёрся",- поэтому его (этот ворнин) и стал игнорировать... Тем более что в рабочем контуре null там не может оказаться в принципе - подобные вещи будут отфильтровываться ещё за два - три шага "до"... ;-)
7 фев 19, 17:08    [21803711]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6188
Надо не костыли вбивать, а исключить ситуацию, при которой возникает предупреждение. Если такое поведение является намеренным, то отфильтровывайте строки с NULL. Иначе тут считаем, а тут не считаем, всего сто, а среднее значение раздаётся и на отсутствующих.
7 фев 19, 17:17    [21803725]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft SQL Server Ответить