Мне нужно вызвать функцию на сервере SQL, но я получил ошибку!
cannot find either column "dbo" or the user-defined function or
aggregate "dbo.udf_Sum_ExtraHours", or the name is ambiguous.
у меня есть функция, которую я получил из стека вчера, и она отлично работает, когда я тестировал ее в студии управления индивидуально, но когда я помещаю ее во встроенную функцию и мне нужно вызвать хранимую процедуру, она выдает указанную ошибку,
функция, которую я сохранил:
ALTER FUNCTION dbo.udf_Sum_ExtraHours
(
@strt date,
@end date
)
RETURNS TABLE
AS
RETURN
WITH cte
AS (
SELECT ExtraHrs
,CASE
WHEN left(ExtraHrs, 1) = '-'
THEN - 1
ELSE 1
END AS multiply
,right(ExtraHrs, 8) AS timestring
,
--get hours in seconds:
DATEPART(HOUR, right(ExtraHrs, 8)) * 3600 AS h_in_s
,
--get minutes in seconds:
DATEPART(MINUTE, right(ExtraHrs, 8)) * 60 AS m_in_s
,
--get seconds:
DATEPART(SECOND, right(ExtraHrs, 8)) AS s
FROM vw_Rept_Attend where convert(date,AtnDate) between @strt and @end
)
,CTE3
AS (
SELECT *
,c.h_in_s + c.m_in_s + c.s AddExtra
FROM cte c
)
,cte4
AS (
SELECT sum(AddExtra * multiply) mn
FROM cte3
)
,cte5
AS (
SELECT mn / 3600 hh
,(mn % 3600) / 60 mi
,(mn % 3600.0) % 60 ss
FROM cte4
)
SELECT
cast(hh AS VARCHAR) + ':' + cast(mi AS VARCHAR) + ':' + cast(ss AS VARCHAR) as ExtraHrs
FROM cte5
теперь хранимая процедура, из которой я хочу вызвать эту функцию,
select UserID,
dbo.udfTimeSpanFromSeconds(Sum(Left(workhrs,2) * 3600 + substring(Convert(varchar(8),workhrs), 4,2) * 60 + substring(Convert(varchar(8),workhrs), 7,2))) as WorkHrs ,
dbo.udf_Sum_ExtraHours('2015-10-12','2015-10-14'),// function which throw error
EmpName,EmpType,UserName, Role,convert(VARCHAR(10),
StartDate,105) as StartDate,convert(VARCHAR(10),EndDate,105) as EndDate
from vw_Rept_Attend where convert(date,AtnDate) between '2015-10-12' and '2015-10-14'
group by UserID,
EmpName,EmpType,UserName, Role,StartDate,EndDate
Order by UserID
но в студии управления сервером SQL функция дает мне точный вывод, когда я выполняю отдельную функцию без использования хранимой процедуры
вывод в студию управления SQL выглядит так:
Я читаю
и многое другое, но не могу решить мою проблему,
пожалуйста, помогите мне выбраться из этого,
спасибо