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
Annonceindlæg fra Infor
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
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.
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.
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.
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!
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.
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)
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??
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 ;-)
20. juli 2001 - 16:22
#10
Gik du helt i stå?? :-)
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
20. juli 2001 - 17:30
#12
Fedt! Tillykke!
Computerworld tilbyder specialiserede kurser i database-management