Avatar billede zyber Nybegynder
19. juli 2001 - 15:26 Der er 11 kommentarer og
1 løsning

tæller

Jeg skal bruge en tæller i en user defined function som returner en tabel. Så jeg får en tabel return der ligner denne:

counter  navn     
1        testone
2        testtwo
3        testthree


Hvordan laver man sådan en tæller ?   

N.B. det er SQL 2000, ellers kan man heller ikke lave user defined functions
Avatar billede zyber Nybegynder
19. juli 2001 - 15:29 #1
Et udsnit af den eksisterende kode

CREATE FUNCTION ITEM_TEST
(
@LoginId varchar(50),
@ItemNo varchar(255)
)
RETURNS @result Table
(
    itemno        varchar(255)
)
AS
BEGIN
    INSERT @result
        (
        itemno
        )

    SELECT
        ItemNo
    FROM
        MyTable
    WHERE
        Itemno = @ItemNo

RETURN

END






Avatar billede gandalfthewhite Nybegynder
19. juli 2001 - 16:31 #2
Du kunne indsætte din data i en #Temp tabel hvor der er tilføjet en IDENTITY kolonne. Herefter kan du hive sættet fra temp tabellen.
Avatar billede zyber Nybegynder
19. juli 2001 - 16:50 #3
Hvad mener du med #temp tabel, kan man lave en temp tabel hvor data ikke bliver gemt ?

Ellers er jeg ikke meget for den løsning da det bliver et hak i performance.
Avatar billede torbenkoch Nybegynder
19. juli 2001 - 17:24 #4
Jeg forstår ikke helt dit spørgsmål. Hvad vil du have at et kald til din funktion returnerer? Giv et eksempel på kald af funktionen og det forventede resultat.
Avatar billede torbenkoch Nybegynder
19. juli 2001 - 17:59 #5
Ahh - tror jeg har fanget den nu. Faktisk er det ret simpelt. I stedet for:


RETURNS @result Table
(
    itemno        varchar(255)
)

skriver du:

RETURNS @result Table
(
    counter      int identity,
    itemno        varchar(255)
)

Så skulle dit problem være løst!
Avatar billede zyber Nybegynder
19. juli 2001 - 21:52 #6
torbenkoch>> Det kan man desværre ikke, identity er ikke gyldig

Jeg har så prøvet at sætte den til uniqueidentifier i steddet, men det returner bare Null fordi er ikke bliver indsat en værdi.


Avatar billede zyber Nybegynder
19. juli 2001 - 21:55 #7
torbenkoch>> User defined functions er bare geniale fordi kan returnere svaret som en almindelig tabel man så kan sætte WHERE og ORDER BY på.

Kaldes ved en alm. SELECT sætning:
SELECT * FROM ITEM_TEST(\'værdi1\',værdi2)
Avatar billede torbenkoch Nybegynder
19. juli 2001 - 21:57 #8
Jeg har nu selv lige inden jeg svarede på spørgsmålet oprettet en user function, hvor jeg benyttede en identity på ovenstående måde.

Hvad får du af fejlmeddelelse, når du prøver??
Avatar billede torbenkoch Nybegynder
19. juli 2001 - 22:05 #9
uniqueidentifier indsætter ikke selv en værdi, så skal du lave en default newid() - men uniqueidentifiers er jo nogle forfærdeligt lange størrelser ;-)
Avatar billede torbenkoch Nybegynder
20. juli 2001 - 16:22 #10
Gik du helt i stå?? :-)
Avatar billede zyber Nybegynder
20. juli 2001 - 16:59 #11
Jeg ved ikke helt hvad jeg lavede i går for du virker det, det er bare lækkert

Tak for hjælpen
Avatar billede torbenkoch Nybegynder
20. juli 2001 - 17:30 #12
Fedt! Tillykke!
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