Exemplarische Vorgehensweise: Debuggen einer benutzerdefinierten T-SQL-Funktion

Aktualisiert: November 2007

Dieses Thema gilt für folgende Anwendungsbereiche:

Edition

Visual Basic

C#

C++

Web Developer

Express

Standard

Pro und Team

Tabellenlegende:

Vorhanden

Nicht vorhanden

Befehl oder Befehle, die standardmäßig ausgeblendet sind.

In diesem Beispiel wird eine vorhandene benutzerdefinierte Funktion mit dem Namen ufnGetStock in der Datenbank AdventureWorks verwendet. Diese Funktion gibt für eine bestimmte ProductID eine Anzahl von vorrätigen Artikeln zurück.

Im Beispiel wird eine gespeicherte Prozedur erstellt, die die benutzerdefinierte Funktion mehrmals aufruft. Die gespeicherte Prozedur ruft die benutzerdefinierte Funktion mit verschiedenen Parametern auf, sodass Sie verschiedene Ausführungspfade in der benutzerdefinierten Funktion verfolgen können. Das Beispiel veranschaulicht außerdem das Springen aus einem T-SQL-Objekt (die gespeicherte Prozedur) in ein anderes Objekt (die Funktion). Dabei sind die gleichen Schritte erforderlich wie in Exemplarische Vorgehensweise: Debuggen einer gespeicherten T-SQL-Prozedur.

Sie auch direktes Datenbankdebuggen ausführen, indem Sie die Funktion im Server-Explorer in Einzelschritten ausführen.

So debuggen Sie eine benutzerdefinierte Funktion

  1. Stellen Sie in einem neuen SQL Server-Projekt eine Verbindung mit der Beispieldatenbank AdventureWorks her. Weitere Informationen finden Sie unter Gewusst wie: Herstellen einer Verbindung zu einer Datenbank.

  2. Erstellen Sie mit dem Code des Beispielabschnitts unten eine neue gespeicherte Prozedur, und benennen Sie sie mit Test_ufnGetStock. Weitere Informationen finden Sie unter Gewusst wie: Entwickeln mit dem SQL Server-Projekttyp.

  3. Legen Sie in Test_ufnGetStock Haltepunkte fest. Dieser Schritt ist optional, da beim direkten Datenbankdebuggen die erste Zeile der Prozedur als Haltepunkt fungiert.

  4. Legen Sie Haltepunkte in der benutzerdefinierten Funktion ufnGetStock.

    1. Öffnen Sie den Quellcode der benutzerdefinierten Funktion, indem Sie im Server-Explorer mit der rechten Maustaste auf den Knoten Funktionen klicken. Doppelklicken Sie anschließend auf das Symbol für ufnGetStock.

    2. Klicken Sie mit der linken Maustaste neben der DECLARE-Anweisung auf den grauen Rand, um einen Haltepunkt festzulegen.

  5. Führen Sie die gespeicherte Prozedur in Einzelschritten aus. Wenn die Prozedur Parameter enthalten hätte, wäre das Dialogfeld Gespeicherte Prozedur ausführen angezeigt worden, in dem die Paramterwerte abgefragt werden. In diesem Fall sind alle Parameter in der gespeicherten Prozedur fest programmiert. Weitere Informationen finden Sie unter Gewusst wie: Ausführen von Einzelschritten in Objekten mithilfe von Server-Explorer.

  6. Testen Sie verschiedene Debugfeatures.

    1. Durchlaufen Sie den Code, indem Sie die F11-TASTE oder die Schaltfläche Einzelschritt verwenden. Wenn Sie an der Position der SELECT-Anweisung erneut die F11-TASTE drücken, wird die benutzerdefinierte Funktion in Einzelschritten ausgeführt. Durchlaufen Sie die benutzerdefinierte Funktion, bis Sie zur gespeicherten Prozedur zurückkehren, und fahren Sie fort.

    2. Je nach den Eingabeparametern können Sie verschiedene Ausführungspfade in der benutzerdefinierten Funktion beobachten. Sie können die Werte der Variablen von benutzerdefinierten Funktionen im Fenster Lokal einsehen. Ebenso können Sie diese Werte anzeigen, indem Sie den Cursor über den Variablen platzieren.

Beispiel

Dies ist der Code für die gespeicherte Prozedur, die die benutzerdefinierte Funktion aufruft.

ALTER PROCEDURE Test_ufnGetStock 
AS
    SELECT dbo.ufnGetStock(1) as CurrentStock   -- non-zero inventory
    SELECT dbo.ufnGetStock(316) as CurrentStock -- zero inventory
    SELECT dbo.ufnGetStock(5) as CurrentStock   -- no such product

Siehe auch

Konzepte

Debuggen von SQL

Referenz

Server-Explorer/Datenbank-Explorer