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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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