Hej, HeJ! OUTER APPLY eller CROSS APPLY borde vara det du vill ha, men de finns bara i SQL 2005 Hmmm...det är lite knepigt att förklara. :) I SQL 2000 går det ej att göra så. Detta pga att du får flera inparametrar, och det funkar inte med en table-valued-function. Varför använder du en funktion? Hur ser koden för den ut? Jag formulerar om mig efter nya postningarnas innehåll... Här får du två svar: <PS: CURSOR på serversidan är hårdrock och riktigt COOL tycker jag... *ler Ja visst, men ibland är de riktigt användbara och kul att använda...använda UDF inparameter med från join
Jag skulle vilja använda en UDF i en select sats och skicka in ett id från en join i den.
ungefär såhär:
select * from table t
inner join dbo.fn_udf(t.id)
Är det möjligt att göra på det viset?
Jag får fel i scriptet, men det är kanske för att jag skriver tokigt.
Tack på förhandSv: använda UDF inparameter med från join
Kan du utveckla lite mer vad det är du vill åstakomma.
//HåkanSv:använda UDF inparameter med från join
/mickeSv:använda UDF inparameter med från join
Säg att jag har en UDF som returnerar en tabell utifrån ett id.
select * from dbo.function(id)
Detta fungerar alldeles utmärkt.
Men om jag nu vill använda ett id från en annan tabell.
select * from person p
inner join dbo.function(p.id)
Så verkar det inte fungera. Går det inte att göra så eller gör jag fel?Sv: använda UDF inparameter med från join
Sv: använda UDF inparameter med från join
Sv:använda UDF inparameter med från join
OUTER APPLY eller CROSS APPLY ÄR det du vill ha, men de finns bara i SQL 2005
/mickeSv: använda UDF inparameter med från join
Är det SQL Server 2005 kan du använda CROSS APPLY eller OUTER APPLY som redan sagt.
Eller så kör du en subquery, funkar i både 2000 och 2005.
SELECT * FROM TABELLEN T WHERE EXISTS (SELECT * FROM FUNKTIONEN(t.id) F)
Dock kommer funktionen exekveras per rad i tabellen
Lite trött nu med det var ett förslag i alla fall
Vill du använda tabellen som input på funktionen gör du först en CURSOR och stegar igenom den och triggar sedan funktionen. Om du gör ett join op det sättet mot en funktion och vill ha in line addressering från den utanförliggande kommer datat från JOIN tabellen förändras (rent teoretiskt) och då skulle resultatet från kopplingen bli inkonsekvent.
-mattelatte
PS: CURSOR på serversidan är hårdrock och riktigt COOL tycker jag... *lerSv:använda UDF inparameter med från join
Skall man se till prestanda (som man bör göra ibland...) SÅ SUUUUGER CURSORS
/mickeSv: använda UDF inparameter med från join
och prestanda har vi ofta i överflöd... Och tänker man till innan kan även cursor vara effektivt...
T ex så kan man bygga en temporär tabell som man binder cursorn till, slarvar man med optimering av tempdb får man dock skylla sig själv...
*ler