[ jddipqd @ 04.06.2008. 12:12 ] @
U subquery-ju ne mogu da kao parametar UDFa koristim vrednost iz osnovnog query-ja.

Kada izvršim
Code:

CREATE FUNCTION dbo.fnGetOpenTicketsByAssignee(@daysFrom int, @daysTo int, @now datetime)
RETURNS TABLE
AS
RETURN (
    SELECT 
        ISNULL(ts.assignedToID, t.assignedtoID) 'assignedtoID',
        COUNT(*) 'nTickets'
    FROM tTickets t
    LEFT JOIN tHELPEU_TicketStatuses ts ON t.ticketID = ts.ticketID
    WHERE (t.dateclosed IS NULL 
        AND (t.currentStatusID IS NULL 
        OR t.currentStatusID NOT IN (
            SELECT statusID 
            FROM dbo.fnGetClosedStatuses(t.typeID)
        ))
    )
    AND (
        (DATEDIFF(day, t.dateopened, @now) >= @daysFrom AND @daysTo IS NULL)
        OR
        (DATEDIFF(day, t.dateopened, @now) BETWEEN @daysFrom AND @daysTo AND @daysTo IS NOT NULL)
    )
    GROUP BY ISNULL(ts.assignedToID, t.assignedtoID)
)

dobijem Incorrect syntax near '.' za liniju FROM dbo.fnGetClosedStatuses(t.typeID)

Ako, međutim, zamenim parametar UDFa konstantom FROM dbo.fnGetClosedStatuses(2), onda prođe.

U čemu je problem?
[ deerbeer @ 04.06.2008. 13:57 ] @
Cini mi se da je ovde problem u nested query-iju jel ne vidi alijas za tabelu Tickets (t)
Probaj ovako :
Code:

SELECT statusID 
         FROM dbo.fnGetClosedStatuses(tTickets.typeID)
[ jddipqd @ 04.06.2008. 16:00 ] @
Citat:
deerbeer: Cini mi se da je ovde problem u nested query-iju jel ne vidi alijas za tabelu Tickets (t)
Probaj ovako :
Code:

SELECT statusID 
         FROM dbo.fnGetClosedStatuses(tTickets.typeID)

Upiti moraju da budu usaglašeni; UDF treba da se poziva za svaki red iz glavnog upita, tako da mora da se koristi alias.
Ali čak i da nije tako, opet se isto ponaša.

Izgleda da UDF koji vraća tabelu uopšte ne može da primi kao parametar vrednost iz obuhvatajućeg upita. :(
[ jddipqd @ 04.06.2008. 16:02 ] @
Da definitivno je tako...

Citat:
Another limitation is that in SQL Server 2000 you cannot join a table-valued UDF with another result set and pass in values from the result set to the UDF