SQL Server 2016: Triggers, Stored Procedures und Funktionen

Parameter in Skalarfunktionen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Skalarfunktionen akzeptieren Parameter, die sich durch einen Namen und einen passenden Datentyp auszeichnen.
05:18

Transkript

Skalarfunktionen können natürlich auch Parameter haben und als Datentypen für Parameter stehen Ihnen die gleichen Datentypen zur Verfügung, die Sie beim Tabellendesign haben, das heißt, Sie können Datentypen wie int angeben, varchar, nvarchar, bit, date, datetime und was auch immer Sie benötigen. Sie können darüber hinaus auch optionale Parameter anlegen, das heißt, genau wie bei Stored Proceduren, können Sie da Parameter haben, die nicht bei jedem Aufruf mit angegeben werden müssen, sondern die einen DEFAULT-Wert erhalten, falls Sie sie nicht angeben, was jetzt eigentlich von der Formulierung her ein bisschen falsch ist, weil Sie müssen bei einer Funktion immer alle Parameter angeben, Sie können nicht einzelne Werte weg lassen und dafür gibt es halt die Möglichkeit das DEFAULT-Schlüsselwort zu verwenden. Wie das in TSQL aussieht, sowohl wie Sie Parameter anlegen, als auch wie Sie optionale Parameter benutzen, zeige ich Ihnen in den nächsten beiden Beispielen. Dafür habe ich hier im SQL Server Management Studio wieder ein Skript geladen. Ich lege zunächst eine Datenbank an und in der Datenbank kann ich dann eine Skalarwertfunktion anlegen, indem ich einfach sage CREATE FUNCTION, das hatten wir gerade schon, und dann hier zwischen runden Klammern entsprechend die Parameter nach altem Muster angebe, spricht ein @ am Anfang und dann der Name des Parameters und zum Schluss den Datentyp. Wenn Sie möchten, können Sie NULL angeben, NOT NULL ist nicht erlaubt, das führt zu einem Fehler. Ich kann zum Beispiel diese Funktion anlegen mit fünf Parametern und ich kann diese Funktion anlegen mit keinem einzigen Parameter. Hier im Object Explorer Programmierung Funktionen Skalarwertfunktionen kann ich mir die Parameter hier, wenn ich möchte auch, anzeigen. Und der Aufruf sieht so aus, dass Sie die Sklarwertfunktion immer mit allen Parametern versehen müssen. Und zwar schlicht, wie man es bei einer Funktion vielleicht auch erwartet, der Reihe nach, das heißt, ich kann hier exakt zum Beispiel den Aufruf so gestalten. Wenn ich keine Parameter habe, muss ich dennoch und das ist wichtig, die geschweiften Klammern notieren, auch wenn sie dann quasi leer sind, ich kann sie nicht weglassen, wenn ich sie weglasse, dann bekomme ich hier beim Aufruf entsprechend einen Fehler. Das ist nicht, was ich unbedingt möchte an der Stelle. Ich benutze die Skalarwertfunktion mit einem SELECT zusammen. Ich kann aber auch folgendes machen: Ich kann eine Variable definieren von dem passenden Typen und könnte dann zum Beispiel den Funktionsaufruf ebenfalls so gestalten, dass ich den Wert auf die rechte Seite des Ausrufezeichens schreibe und damit wird die Variable deklariert und gleich mit dem Wert versehen und genau das funktioniert. Überall, wo Sie einen einzeln Wert verwenden können, oder zumindest an sehr vielen Stellen, können Sie Skalarwertfunktionen einfügen und entsprechend sieht es dann immer so aus, dass Sie genau diesen Aufruf haben, aber Sie sehen hier direkt Aufrufen funktioniert nicht, ich muss es wirklich irgendwo zuweisen, irgendwo verwenden und dann klappt doch der Aufruf ohne Weiteres. Wenn ich zum Beispiel versuche hier testweise, ich habe gerade erwähnt, dass es nicht erlaubt ist. NOT NULL anzugeben, bekomme ich eine Fehlermeldung, die sagt: Der Parameter @P3 wurde als NOT NULL deklariert. NOT NULL-Parameter werden nur von systemintern kompilierten gespeicherten Prozeduren unterstützt. Das heißt, hier habe ich nur die Wahl, entweder nichts anzugeben oder NULL, sonst bekomme ich auch einen Fehler. Mit diesem Skript zeige ich Ihnen, wie Sie mit optionalen Parametern umgehen können. Zunächst einmal erzeuge ich wieder die Datenbank, dann kann ich in der Datenbank eine Funktion anlegen und ähnlich wie bei Stored Proceduren, kann ich optionale Parameter so definieren, indem ich hier ein Gleichheitszeichen schreibe und entsprechend dann den Standarwert für diesen optionalen Parameter angebe. Das funktioniert hervorragend. Ich kann natürlich nach wie vor schlicht die Funktion aufrufen, indem ich alle Parameter übergebe. Das erzeugt mir genau diese 0, es ist nur eine Konstante Rückgabe. Für den Fall, dass ich Werte nicht übergeben möchte, dann muss ich entsprechend schlicht einfach nur DEFAULT schreiben. Ich kann sie nicht weglassen, ich kann keine Übergabe der Parameter über den Namen oder Ähnliches realisieren, ich muss an der Stelle schlicht nur DEFAULT schreiben. Ich könnte zum Beispiel das aufrufen, das funktioniert ja. Dann könnte ich mal versuchen hier noch ein DEFAULT anzugeben. Sie sehen, das funktioniert auch. Obwohl der letzte Parameter keinen DEFAULT-Parameter in dem Sinne ist, dass hier einen Gleichheitszeichen-Wert hinter steht, in dem Fall wird einfach NULL verwendet. Das heißt, da habe ich die Möglichkeit quasi einen impliziten Standardwert zu verwenden.

SQL Server 2016: Triggers, Stored Procedures und Funktionen

Nutzen Sie in SQL Server Trigger, gespeicherte Prozeduren, Late Binding, Fehlerbehandlung sowie Scalar- und Tabellenwertfunktionen.

3 Std. 12 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:08.08.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!