webForumDet fria alternativet

stored procedure: output vs. select

5 svar · 393 visningar · startad av doggelito

doggelitoMedlem sedan juni 20003 076 inlägg
#1

har kollat runt lite men inte hittat nått vettigt.
vad är skillnaden på att använda en output-parameter mot att använda en select som retur?

Create Procedure minSP
     @blabla int output

AS

...
set @blabla = 12345
Create Procedure minSP
     @blabla int

AS

...
select 12345
LarsGMedlem sedan dec. 200012 464 inlägg
#2

Inga stora.

Det blir skillnad i anropet och hur man hämtar värdet. Prestandaskillnader? Vet inte, men har svårt att tro att det finns några som motiverar det ena framför det andra.

doggelitoMedlem sedan juni 20003 076 inlägg
#3

Oki! :)
Finns det nått som talar för det ena eller det andra om vad man bör använda om man ser framåt mot MS SQL Server 2005?

NöffMedlem sedan nov. 2003569 inlägg
#4

E inte själva frågan lite felställd?.
en out parameter returnerar en datatyp. Men en select kan returnera ett helt resultset.

doggelitoMedlem sedan juni 20003 076 inlägg
#5

Nöff skrev:

E inte själva frågan lite felställd?.

Njao, kanske det. Men det jag menade med frågan gällde bara ett värde i selecten, därav paralellen till en output.

emissionMedlem sedan dec. 19996 721 inlägg
#6

doggelito skrev:

Oki! :)
Finns det nått som talar för det ena eller det andra om vad man bör använda om man ser framåt mot MS SQL Server 2005?

Nej, inte direkt.

Det finns en skillnad, och den består främst i hur värdena transporteras. Om man returnerar ett resultatset så skulle detta kunna innebära att det krävs en server-side cursor plus ett klientinstantierat objekt för att hantera informationen, medan parametervarianten blir betydligt snålare. I praktiken blir det dock mest hårklyverier, för även om man skulle få parameter-versionen att bli 100 gånger snabbare än resultatset-versionen så berör detta oftast en typ av operationer (returnera 1 värde) som utgör en minimal del av en större operation. "Många bäckar små..." säger en del, men det är ointressant när floder av annan kod flyter förbi.

Som jag ser det finns det två bra argument till att använda OUTPUT-parametrar.

  1. Det går att se direkt vad en SP returnerar. Dels med egna ögon genom att titta på hur den är definierad, men även genom schema-undersökande funktioner. Man skulle kunna säga att resultatet från SP:n blir hårt typat, vilket det inte nödvändigtvis blir med ett resultatset.
  2. Man vill returnera något mer än ett resultatset, utan att behöva hantera flera resultat
129 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)