sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server:Funktioner med tabelværdi vs. lagrede procedurer

En inline table valued function (TVF) er som en makro:den udvides til den ydre forespørgsel. Den har ingen plan som sådan:den kaldende SQL har en plan.

Et TVF med flere erklæringer har en plan (vil finde en reference).

TVF'er er nyttige, hvor du ønsker at variere SELECT-listen for en parameterindstillet input. Inline TVF'er udvides, og det ydre valg/hvor vil blive overvejet af optimizeren. For TVF'er med flere sætninger er optimering ikke rigtig mulig, fordi den skal køre til fuldførelse, filter.

Personligt ville jeg bruge en lagret proc over en multi-statement TVF. De er mere fleksible (f.eks. tip, kan ændre tilstand, INDSTIL INGEN ANTAL TIL, INDSTIL XACTABORT osv.).

Jeg har ingen indvendinger mod inline TVF'er, men jeg plejer ikke at bruge dem til klientvendt kode på grund af manglende evne til at bruge SET og ændre tilstand.



  1. Hvordan tilføjer man brugerdefinerede attributter til SQL-forbindelsesstrengen?

  2. Sådan gendannes database ved hjælp af RMAN

  3. Sådan bruger du MySQL med Deno og Eg

  4. Sådan rettes "Serveren er ikke konfigureret til DATAADGANG" i SQL Server