Avatar billede speedy Nybegynder
04. juli 2009 - 10:58 Der er 1 løsning

Bruge table-valued function korrekt

Hejsa

Jeg har lavet en table-valued function som f.eks. hedder

getUserFromUserId(@userId)

Den sørger for at returnere en række med alle de informationer jeg skal bruge om en bruger ud fra et userId - det vil sige en masse joins fra flere tabeller.

Den vil jeg så gerne bruge når jeg henter en liste over brugere ud sådan her:

DECLARE @userIdTable TABLE
(
    userId int
)

INSERT INTO @userIdTable
    SELECT
        dbo.User.userId
    FROM
        dbo.User


Nu har jeg en tynd tabel, kaldet @userIdTable som jeg gerne vil have udført min funktion på for hver userId deri.

Hvordan gør man det?

Jeg har prøvet forskellige metoder...blandt andet:

SELECT
    dbo.getUserFromUserId(@userIdTable.userId)
FROM
    @userIdTable

Men jeg kan ikke rigtig få det til at virke.
Avatar billede speedy Nybegynder
04. juli 2009 - 12:04 #1
Nå, efter lidt søgning og lidt prøven frem og tilbage faldt jeg over CROSS APPLY


SELECT
    userDataTable.*
FROM
    @userIdTable userIdTable
    CROSS APPLY dbo.getUserFromUserId(userIdTable.userId) userDataTable

Man lærer noget nyt hver dag :)

Håber andre kan bruge det til noget hvis de falder over dette spørgsmål :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester