Inicio > Transact-SQL > SQL dinámico en Transact SQL

SQL dinámico en Transact SQL


Para ejecutar un Sql Dinamico, se recomienda utilizar el procedimiento almacenado Sp_ExecuteSql, en lugar de una instrucción EXECUTE

Sp_ExecuteSql : Ejecuta una instrucción o lote Transact-SQL que puede volver a utilizarse muchas veces o uno que se ha generado de forma dinámica. La instrucción o el lote Transact-SQL puede contener parámetros incrustados.

– es más seguro y versátil que EXECUTE
– admite la sustitución de parámetros
– genera planes de ejecución con más probabilidades de que SQL Server los vuelva a utilizar, es más eficaz que EXECUTE

El siguiente ejemplo muestra el uso :

DECLARE @SqlDinamico NVARCHAR(1000)
SET @SqlDinamico = ‘SELECT COD_CIUDAD, NOMBRE_CUIDAD
FROM CIUDADES’

EXEC Sp_ExecuteSql @SqlDinamico

Sp_ExecuteSql : Admite la sustitución de valores de parámetros para cualquier parámetro especificado en la cadena Transact-SQL a ejecutar

El siguiente ejemplo muestra su uso :

DECLARE @SqlDinamico NVARCHAR(1000),
@paramDefinition nvarchar(255),
@paramValue char(3)

SET @paramDefinition = ‘@codCiudad char(3)’
SET @paramValue = ‘ESP’
SET @SqlDinamico = ‘SELECT COD_CIUDAD, NOMBRE_CIUDAD
FROM CIUDADES
WHERE COD_CIUDAD = @CodCiudad’

EXEC Sp_ExecuteSql @SqlDinamico, @paramDefinition, @paramValue

Concluciones :

•  Valorar el rendimiento del uso de SQL Dinámico y compararlo con la programación SQL estática a fin de establecer una decisión basada criterios técnicos, y no simplemente en un capricho de programación.
•  La construcción de filtros dinámicos se haga a través del uso de procedimientos almacenados y parámetros de entrada dada sus ventajas en aspectos de seguridad, rendimiento, y facilidad de mantenimiento.
•  Nunca otorgar más privilegios de los necesarios, asignando convenientemente permisos de ejecución sobre los procedimientos almacenados.

Categorías:Transact-SQL
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: