Exemplarische Vorgehensweise: Debuggen einer benutzerdefinierten Transact-SQL-Funktion
Dieses Thema gilt für folgende Editionen:
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
In diesem Beispiel wird eine vorhandene benutzerdefinierte Funktion (UDF) mit dem Namen ufnGetStock in der AdventureWorks2008-Datenbank verwendet.Diese Funktion gibt für eine angegebene ProductID eine Anzahl vorrätiger Elemente zurück.
Im Beispiel wird eine gespeicherte Prozedur erstellt, die die UDF mehrmals aufruft.Die gespeicherte Prozedur ruft die UDF mit unterschiedlichen Parametern auf, sodass Sie verschiedenen Ausführungspfaden durch die UDF folgen können.Im Beispiel wird auch das Springen von einem Transact-SQL-Objekt (der gespeicherten Prozedur) zu einem anderen (der Funktion) veranschaulicht.Die Schritte ähneln denen im Verfahren Exemplarische Vorgehensweise: Debuggen einer gespeicherten Transact-SQL-Prozedur.
Das direkte Datenbankdebugging ist ebenfalls möglich. Führen Sie dazu im Server-Explorer einen Einzelschritt in die Funktion aus.
So debuggen Sie eine benutzerdefinierte Funktion
Stellen Sie in einem neuen SQL Server-Projekt eine Verbindung mit der AdventureWorks2008-Beispieldatenbank her.Weitere Informationen finden Sie unter Gewusst wie: Herstellen einer Datenbankverbindung mit dem Server-Explorer.
Erstellen Sie mit dem Code aus dem unten stehenden Beispielabschnitt eine neue gespeicherte Prozedur mit dem Namen "Test_ufnGetStock".Weitere Informationen finden Sie unter Gewusst wie: Debuggen mit einem SQL Server-Datenbankprojekt oder -Serverprojekt.
Legen Sie Haltepunkte in "Test_ufnGetStock" fest.Dieser Schritt ist optional, da die erste Zeile der Prozedur beim direkten Datenbankdebugging als Haltepunkt fungiert.
Legen Sie Haltepunkte in der UDF ufnGetStock fest.
Öffnen Sie den Quellcode für die UDF, indem Sie im Server-Explorer mit der rechten Maustaste auf den Knoten Funktionen klicken und dann auf das Symbol ufnGetStock doppelklicken.
Klicken Sie mit der linken Maustaste in den grauen Rand neben der DECLARE-Anweisung, um einen Haltepunkt festzulegen.
Führen Sie einen Einzelschritt in die gespeicherte Prozedur aus.Bei einer Prozedur mit Parametern wird nun das Dialogfeld Gespeicherte Prozedur ausführen angezeigt, und Sie werden zur Eingabe der Werte aufgefordert.In diesem Fall sind die Parameter alle in der gespeicherten Prozedur hartcodiert.Weitere Informationen finden Sie unter Gewusst wie: Einzelschritt in ein Objekt mit dem Server-Explorer.
Probieren Sie verschiedene Debugfunktionen aus.
Führen Sie den Code mit der F11-TASTE oder der Schaltfläche Einzelschritt schrittweise aus.Wenn Sie bei der SELECT-Anweisung erneut F11 drücken, führen Sie einen Einzelschritt in die UDF aus.Führen Sie die UDF schrittweise aus, bis Sie wieder zur gespeicherten Prozedur gelangen, und fahren Sie dann fort.
Abhängig von den Eingabeparametern können Sie unterschiedliche Ausführungspfade in der UDF beobachten.Die Werte von Variablen in UDFs können im Fenster Lokal angezeigt werden. Sie können auch den Cursor über die UDFs halten, um die Variablenwerte einzublenden.
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