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

Откуда:
Сообщений: 1401
В процедуре используется функция KompHnd

create function fxKompHind (@Project varchar, @Tyyp Int, @Qty float)

returns float

begin

declare @self float, @type float;

if (@Tyyp = 1)
begin
select @type = arve from SmartenLogistics.dbo.Hinnad where ProjektID = @Project
set @Self = @Qty * @type
end
if (@Tyyp = 2)
begin
select @type = Rida from SmartenLogistics.dbo.Hinnad where ProjektID = @Project
set @Self = @Qty * @type
end
if (@Tyyp = 3)
begin
select @type = Alus from SmartenLogistics.dbo.Hinnad where ProjektID = @Project
set @Self = @Qty * @type
end
if (@Tyyp = 4)
begin
select @type = Kast from SmartenLogistics.dbo.Hinnad where ProjektID = @Project
set @Self = @Qty * @type
end
if (@Tyyp = 5)
begin
select @type = Tykk from SmartenLogistics.dbo.Hinnad where ProjektID = @Project
set @Self = @Qty * @type
end
return @self
end

В тексте процедуры есть запрос

SELECT
dbo.Komplekteerijad.Id,
dbo.Komplekteerijad.Name,
Sum(#ArveMR.CountOfArve_number) AS Arveid,
Sum(#RiduMR.CountOfArve_number) AS Ridu,
Sum(#TykkidMR.Aluseid) AS SumOfAluseid,
Sum(#TykkidMR.Kaste) AS SumOfKaste,
Sum(#TykkidMR.Tykke) AS SumOfTykke,
Sum(dbo.fxKompHind(#ArveMR.Peaprojekt,1,#ArveMR.CountOfArve_number)) AS ArveHind,
Sum(dbo.fxKompHind(#RiduMR.Peaprojekt,2,#RiduMR.CountOfArve_number)) AS RidaHind,
Sum(dbo.fxKompHind(#TykkidMR.Peaprojekt,3,#TykkidMR.Aluseid)) AS AlusHind,
Sum(dbo.fxKompHind(#TykkidMR.Peaprojekt,4,#TykkidMR.Kaste)) AS KastHind,
Sum(dbo.fxKompHind(#TykkidMR.Peaprojekt,5,#TykkidMR.Tykke)) AS TykkHind
--INTO #MRAll
FROM (((Komplekteerijad
INNER JOIN #ArveMR ON Komplekteerijad.Id = #ArveMR.Komplekteerija)
INNER JOIN #RiduMR ON Komplekteerijad.Id = #RiduMR.Komplekteerija)
INNER JOIN #TykkidMR ON Komplekteerijad.Id = #TykkidMR.Komplekteerija)
INNER JOIN SQL.SmartenLogistics.dbo.Laod as Laod ON (#ArveMR.Lao_number = Laod.LaduID) AND (#RiduMR.Lao_number = Laod.LaduID) AND (#TykkidMR.LaduID = Laod.LaduID)
GROUP BY dbo.Komplekteerijad.Id, dbo.Komplekteerijad.Name, dbo.Komplekteerijad.User1
HAVING (((dbo.Komplekteerijad.User1)<>'1'));

Что самое интересное вместо значений этой функции выдаются значения Null. Проверял входные параметры, 2 из них выводятся селектом, 3й так вообще константа. Не подскажите в чем дело?
1 авг 05, 10:24    [1751050]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в процедуре.  [new]
Glory
Member

Откуда:
Сообщений: 104760
select @@vesrsion что возвращает ?
1 авг 05, 10:27    [1751063]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в процедуре.  [new]
vooo
Member

Откуда:
Сообщений: 1316
В процедуре используется функция KompHnd

create function fxKompHind (@Project varchar, @Tyyp Int, @Qty float)


Во первых ,размерность varchar не указана
1 авг 05, 10:27    [1751065]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в процедуре.  [new]
Zmiy
Member

Откуда:
Сообщений: 1401
Спасибо большое, а какая кстати разница если я определяю размер varchar или нет?Разве по умолчанию не 255 стоит?
1 авг 05, 10:30    [1751088]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в процедуре.  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62912
Zmiy
Разве по умолчанию не 255 стоит?

Нет
1 авг 05, 10:31    [1751091]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка в процедуре.  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Zmiy
Спасибо большое, а какая кстати разница если я определяю размер varchar или нет?Разве по умолчанию не 255 стоит?
По умолчанию для объявления 1, для CONVERT 30.
1 авг 05, 10:36    [1751119]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить