Functie vs. opgeslagen procedure in SQL Server

Ik'heb Functies en Opgeslagen Procedure voor een tijdje geleerd maar ik'weet niet waarom en wanneer ik een functie of een opgeslagen procedure zou moeten gebruiken. Ze zien er voor mij hetzelfde uit, misschien omdat ik een beetje beginner ben op dat gebied.

Kan iemand mij vertellen waarom?

Oplossing

Functies zijn berekende waarden en kunnen geen permanente omgevingswijzigingen in SQL Server uitvoeren (d.w.z. geen INSERT of UPDATE statements toegestaan).

Een functie kan inline in SQL-statements worden gebruikt als deze een scalaire waarde retourneert, of kan worden samengevoegd als deze een resultatenset retourneert.

Een vermeldenswaardig punt uit commentaren, die het antwoord samenvatten. Met dank aan @Sean K Anderson:

Functies volgen de computer-sciency definitie in die zin dat ze een waarde MOETEN teruggeven en de gegevens die ze als parameters ontvangen niet kunnen veranderen (de argumenten). Functies mogen niets veranderen, moeten ten minste één parameter hebben, en ze moeten een waarde teruggeven. Opgeslagen procs hoeven geen parameter te hebben, kunnen databaseobjecten wijzigen, en hoeven geen waarde terug te geven.

Commentaren (12)

Schrijf een door de gebruiker gedefinieerde functie als je een waarde wilt berekenen en retourneren voor gebruik in andere SQL-statements; schrijf een opgeslagen procedure als je in plaats daarvan een mogelijk complexe reeks SQL-statements wilt groeperen. Dit zijn per slot van rekening twee behoorlijk verschillende use cases!

Commentaren (1)

Om te beslissen wanneer wat te gebruiken, kunnen de volgende punten helpen-

  1. Opgeslagen procedures kunnen geen tabelvariabele teruggeven, terwijl functies dat wel kunnen.

  2. Je kunt stored procedures gebruiken om de server environment parameters te wijzigen waar als je functies gebruikt je dat niet kunt'doen.

proost

Commentaren (0)