Freigeben über


Gewusst wie: Erstellen von gespeicherten Prozeduren und benutzerdefinierten Funktionen

Mithilfe von Server-Explorer können gespeicherte Prozeduren erstellt werden.Gespeicherte Prozeduren können komplexe Geschäftsregeln definieren, die Änderung von Daten steuern, den Zugriff mithilfe von Sicherheitsberechtigungen einschränken, Transaktionsintegrität bereitstellen und allgemein die von der Anwendung benötigten Datenbankarbeiten ausführen.

Unter Microsoft SQL Server 2000 und späteren Versionen können Sie mit Server-Explorer auch benutzerdefinierte Funktionen erstellen.Eine benutzerdefinierte Funktion stellt eine Routine dar, die nützliche Logik für die Verwendung in anderen Abfragen einschließt.Während Ansichten auf eine einzelne SELECT-Anweisung beschränkt sind, können benutzerdefinierte Funktionen mehrere SELECT-Anweisungen aufweisen und eine leistungsfähigere Logik bereitstellen, als dies mit Ansichten möglich ist.

Benutzerdefinierte Funktionen geben immer einen Wert zurück.Je nach Typ des zurückgegebenen Werts fällt jede benutzerdefinierte Funktion unter eine von drei Kategorien:

  • Benutzerdefinierte Funktion Skalarwertfunktion Eine kann einen Skalarwert wie eine ganze Zahl oder einen Timestamp zurückgeben.Wenn eine Funktion einen skalaren Wert zurückgibt, können Sie sie in einer Abfrage überall dort einsetzen, wo Sie einen Spaltennamen verwenden würden.

  • Inlinefunktion, wenn eine benutzerdefinierte Funktion eine einzelne SELECT-Anweisung enthält und diese Anweisung aktualisierbar ist, dann das tabellarische Ergebnis, das von der Funktion zurückgegeben wird, ist auch aktualisierbar.Solche Funktionen werden als Inlinefunktionen bezeichnet.Wenn eine Inlinefunktion eine Tabelle zurückgibt, können Sie diese Funktion in der FROM-Klausel einer anderen Abfrage verwenden.Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Abfragen mit anderen Quellen als einer Tabelle.

  • Tabellenwertfunktion, wenn eine benutzerdefinierte Funktion mehrere SELECT-Anweisungen enthält oder eine SELECT-Anweisung, die nicht aktualisierbar ist, ist das tabellarische Ergebnis, das von dieser Funktion zurückgegeben wird, nicht aktualisierbar.Wenn eine Tabellenwertfunktion eine Tabelle zurückgibt, können Sie diese Funktion in der FROM-Klausel einer anderen Abfrage verwenden.

HinweisHinweis

In den folgenden Beispielen ist "DBO" ein Akronym für den Datenbankbesitzer (Database Owner) und wird verwendet, um den Namen der gespeicherten Prozedur und der benutzerdefinierten Funktion zu qualifizieren.Der DBO ist ein Benutzer, der über implizite Berechtigungen zum Durchführen aller Aktivitäten in der Datenbank verfügt.Jedes von einem Mitglied der Sysadmin-Rolle erstellte Objekt gehört automatisch zum DBO.In den folgenden Beispielen ist der DBO-Namensqualifizierer enthalten.

HinweisHinweis

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

So erstellen Sie eine neue gespeicherte Prozedur

  1. Klicken Sie im Server-Explorer mit der rechten Maustaste auf den Ordner Gespeicherte Prozeduren oder auf eine beliebige gespeicherte Prozedur in diesem Ordner.

  2. Klicken Sie im Kontextmenü auf den Befehl Neue gespeicherte Prozedur hinzufügen.

    Es wird eine neue gespeicherte Prozedur mit den folgenden SQL-Anweisungen als Skelett erstellt:

    CREATE PROCEDURE dbo.StoredProcedure1
    /*
       (
          @parameter1 datatype = default value,
          @parameter2 datatype OUTPUT
       )
    */
    AS
       /* SET NOCOUNT ON */
       RETURN
    
  3. StoredProcedure1 in der ersten Zeile kann durch den Namen der neuen Prozedur ersetzt werden.Beispielsweise können Sie MyProcedure als Namen verwenden:

    CREATE PROCEDURE dbo.MyProcedure
    
    HinweisHinweis

    Gespeicherte Prozeduren müssen eindeutige Namen aufweisen.Wenn Sie einen Namen wählen, der bereits einer anderen gespeicherten Prozedur zugewiesen ist, werden Sie durch eine Fehlermeldung gewarnt, dass bereits eine gespeicherte Prozedur gleichen Namens vorhanden ist.

  4. Schreiben Sie den restlichen Prozedurtext in SQL.

    Weitere Informationen und Beispiele für gespeicherte Prozeduren finden Sie in der Dokumentation des Datenbankservers.Wenn Sie Microsoft SQL Server verwenden, finden Sie unter "CREATE PROCEDURE" in der SQL Server-Onlinedokumentation.

So erstellen Sie eine neue benutzerdefinierte Funktion

  1. Klicken Sie im Server-Explorer mit der rechten Maustaste auf den Ordner Funktionen oder auf eine beliebige andere Funktion in diesem Ordner.

  2. Zeigen Sie im Kontextmenü auf Neu hinzufügen, und wählen Sie dann Inlinefunktion, Tabellenwert-Funktion oder Skalarwertfunktion.

    HinweisHinweis

    Das Skelett aus SQL-Anweisungen für eine neue Funktion kann nicht in die SQL-Anweisungen für einen anderen Funktionstyp geändert und anschließend gespeichert werden.Wenn Sie z. B. mit einer Inlinefunktion beginnen, können Sie die SQL-Anweisungen nicht zu einer Skalarwertfunktion ändern.Der Speichervorgang schlägt fehl.

    Es wird eine neue benutzerdefinierte Funktion mithilfe eines Skeletts aus SQL-Anweisungen erstellt.Wenn Sie z. B. Skalarwertfunktion wählen, wird das folgende Skelett aus SQL-Anweisungen angezeigt:

    CREATE FUNCTION dbo.Function1
       (
       /*
       @parameter1 datatype = default value,
       @parameter2 datatype
       */
       )
    RETURNS /* datatype */
    AS
       BEGIN
          /* sql statement ... */
       RETURN /* value */
       END
    
  3. Function1 in der ersten Zeile kann durch den Namen der neuen Funktion ersetzt werden.Beispielsweise können Sie MyFunction als Namen verwenden:

    CREATE FUNCTION dbo.MyFunction
    
    HinweisHinweis

    Benutzerdefinierte Funktionen müssen eindeutige Namen aufweisen.Wenn Sie einen Namen wählen, der bereits einer anderen Funktion zugewiesen ist, werden Sie durch eine Fehlermeldung gewarnt, dass bereits eine Funktion gleichen Namens vorhanden ist.

  4. Schreiben Sie den restlichen Funktionstext in SQL.

HinweisHinweis

Wenn die gewünschte Option nicht im Kontextmenü angezeigt wird, wird dieses Feature in der von Ihnen verwendeten Version von Visual Studio möglicherweise nicht unterstützt.Weitere Informationen finden Sie unter Versionen von Visual Database Tools.

Weitere Informationen und Beispiele für benutzerdefinierte Funktionen finden Sie in der Dokumentation des Datenbankservers.Wenn Sie Microsoft SQL Server verwenden, finden Sie unter "CREATE FUNCTION" in der SQL Server-Onlinedokumentation.

Siehe auch

Konzepte

Ausdrücke in Abfragen

Weitere Ressourcen

Arbeiten mit gespeicherten Prozeduren und benutzerdefinierten Funktionen