Tutorial: Depurar una función definida por el usuario de T-SQL
Actualización: noviembre 2007
Este tema se aplica a:
Edición |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Estándar |
||||
Pro y Team |
Leyenda de la tabla:
Se aplica |
|
No procede |
|
Comando o comandos ocultos de manera predeterminada. |
En este ejemplo se utiliza una función definida por el usuario (UDF) existente denominada ufnGetStock en la base de datos AdventureWorks. Esta función devuelve un recuento de elementos en existencia para un ProductID determinado.
El ejemplo crea un procedimiento almacenado que llama al UDF varias veces. El procedimiento almacenado llama al UDF con diferentes parámetros, por lo que puede seguir las diferentes rutas de acceso de ejecución a través de la UDF. El ejemplo también ilustra el salto de un objeto de T-SQL, o procedimiento almacenado, a otro (función). Los pasos son similares a los descritos en Tutorial: Depurar un procedimiento almacenado de T-SQL.
También puede realizar la depuración de base de datos directa ejecutando paso a paso las instrucciones de la función en el Explorador de servidores.
Para depurar una función definida por el usuario
En un nuevo proyecto de SQL Server, establezca una conexión a la base de datos de ejemplo AdventureWorks. Para obtener más información, vea Cómo: Conectarse a una base de datos.
Cree un nuevo procedimiento almacenado utilizando el código de la sección de ejemplo siguiente y asígnele el nombre Test_ufnGetStock. Para obtener más información, vea Cómo: Desarrollar con el tipo de proyecto de SQL Server.
Establezca puntos de interrupción en Test_ufnGetStock. Esto es opcional, ya que la depuración de base de datos directa hace que la primera línea del procedimiento actúe como un punto de interrupción.
Establezca los puntos de interrupción en la UDF ufnGetStock.
Para abrir el código fuente de la UDF, haga clic con el botón secundario del mouse (ratón) en el nodo Funciones en el Explorador de servidores y, a continuación, haga doble clic en el icono de ufnGetStock.
Haga clic en el margen gris junto a la instrucción DECLARE para establecer un punto de interrupción.
Ejecute paso a paso el procedimiento almacenado. Si el procedimiento tuviera parámetros, aparecería el cuadro de diálogo Ejecutar procedimiento almacenado, que solicita los valores de esos parámetros. En este caso, todos los parámetros están incluidos en el código del procedimiento almacenado. Para obtener más información, vea Cómo: Recorrer paso a paso un objeto utilizando el Explorador de servidores.
Pruebe características de depuración diferentes.
Ejecute las instrucciones paso a paso del código utilizando la tecla F11 o el botón Paso a paso por instrucciones. En la instrucción SELECT, al presionar F11 de nuevo, ejecutará paso a paso las instrucciones de la UDF. Ejecute paso a paso la UDF hasta que se salga y vuelva al procedimiento almacenado, y continúe.
Puede observar las diferentes rutas de acceso de ejecución en la UDF en función de los parámetros de entrada. Puede ver los valores de las variables en las UDF en la ventana Variables locales o situando el puntero del mouse sobre ellas.
Ejemplo
Este es el código para el procedimiento almacenado que llama a la función definida por el usuario.
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