SQL - Worin unterscheiden sich Tabellenwertfunktionen, Sicht und Prozeduren?
Guten Tag zusammen,
kann mir jemand von euch erläutern, worin genau der Unterschied zwischen der Tabellenwertfunktion, Sicht und der Prozedur liegt?
Bzw.: welche Merkmale gerade diese Funktion ausmacht und in welchen "Fällen" man diese nutzen sollte.
Komme mit Google alleine kaum weiter.
1 Antwort
Eine Sicht ist im Grunde eine Tabellenabfrage der du einen Namen gegeben hast. Wenn du z.B. komplexe/verschachtelte SELECTs hast oder ein recht großes SELECT öfters brauchst. Die Sicht "AktuelleProjekte" könnte z.B. eine Abfrage der Projekte-Tabelle sein, bei der du ein paar Sachen wie abgeschlossene Projekte herausfilterst.
Eine Tabellenwertfunktion ist eine Funktion die eine Tabelle als Rückgabe hat.
Funktionen und Prozeduren sind sequenzielle Abläufe von mehreren Befehlen/Abfragen und kommen dann zum Einsatz wenn ein einziger Befehl nicht ausreicht oder Konstrukte wie Schleifen nötig werden um die Aufgabe zu erfüllen. Der Unterschied zw. den beiden ist grob gesagt dass Funktionen für komplexere Daten-Abfragen geeignet sind und Prozeduren für komplexere Daten-Manipulationen. Man könnte eine Sicht also auch als parameterlose Tabellenwertfunktion ansehen. Prozeduren können auch Funktionen/Sichten nutzen, aber Funktionen keine Prozeduren. Funktionen liefern, Prozeduren machen - um's mal platt zu formulieren.
Beispiel für eine Funktion: AktuelleProjekte([User-ID])
Beispiel für eine Prozedur: ArchiviereFertigeProjekte([Mindestalter])
Funktionen und Prozeduren können dazu beitragen daten-zentrische Logik von der Anwendung in das DBMS zu verschieben, also dass z.B. die Software-Anwendung sich nicht erst alles aus den einzelnen Tabellen zusammenklamüsern muss, damit es Sinn ergibt, sondern direkt etwas "vollständiges" erhält - wie z.B. eine Liste mit den aktuellen Projekten und allem was dazugehört / die Anwendung braucht. So muss auch die Anwendung nicht mehrfach nachfragen um an alle Infos zu kommen und die Datenbank kann selbst die Integrität der Daten wahren
Vielen Dank für die Antwort.
War sehr verständlich erklärt!