Generar instrucciones en tiempo de ejecución

La mayor parte de las aplicaciones de Microsoft SQL Server que necesitan generar instrucciones SQL dinámicamente en tiempo de ejecución lo hacen antes de llamar a una función o método de la API de bases de datos para ejecutar la instrucción. Por ejemplo, una aplicación del lenguaje C que usa ODBC puede generar dinámicamente una o varias instrucciones SQL en una matriz de caracteres y, a continuación, pasar esa matriz a las funciones de ODBC SQLPrepare o SQLExecDirect.

Transact-SQL admite las siguientes formas de generar instrucciones SQL en tiempo de ejecución en las secuencias de comandos Transact-SQL, procedimientos almacenados y desencadenadores:

  • Use el procedimiento almacenado del sistema sp_executesql para ejecutar una cadena Unicode. sp_executesql admite la sustitución de parámetros de forma similar a como se realiza en la instrucción RAISERROR.

  • Use la instrucción EXECUTE para ejecutar una cadena de caracteres. La instrucción EXECUTE no admite la sustitución de parámetros en la cadena ejecutada.

    Nota de seguridadNota de seguridad

    El uso de la instrucción EXECUTE para ejecutar una cadena facilita los ataques por inyección de código SQL. En su lugar, se recomienda utilizar sp_executesql con parámetros.