 |
|
 |
SQL dinámico en Transact SQL
Transact SQL permite dos formas de ejecutar SQL dinamico(construir sentencias SQL dinamicamente para ejecutarlas en la base de datos):
Desde aquí recomendamos la utilización de sp_executesql si bien vamos a mostrar la forma de trabajar con ambos métodos.
La instrucción EXECUTE
La instrucción EXECUTE - o simplemente EXEC - permite ejecutar una cadena de caracteres que representa una sentencia SQL. La cadena de caracteres debe ser de tipo nvarchar .
El siguiente ejemplo muestra como ejecutar una cadena de caracteres con la instrucción EXEC.
DECLARE @sql nvarchar(1000) SET @sql = 'SELECT COD_PAIS, NOMBRE_PAIS, ACTIVO, FX_ALTA FROM PAISES' EXEC (@sql)
|
También con SQL dinamico podemos ejecutar sentencias de tipo DDL (Data Definition Languaje), como CREATE TABLE.
DECLARE
@sql nvarchar(1000)SET @sql='CREATE TABLE TEMPORAL ( ID int IDENTITY, DATO varchar(100))' EXEC (@sql) SET @sql = 'SELECT * FROM TEMPORAL' EXEC (@sql) |
El principal incoveniente de trabajar con la instrucción EXEC es que no permite el uso de parametros abriendo la puerta a potenciales ataques de Sql Injections - http://www.devjoker.com/contenidos/Articulos/45/Seguridad-en-Internet--SQL-Injections.aspx
Además el uso de la instrucción EXEC es menos eficiente, en terminos de rendimiento, que sp_executesql.
Para solventar el problema debemos trabajar siempre con sq_executesql, que permite el uso de parametros y con el que obtendremos un mejor rendimiento de nuestras consultas.
El procedimiento almacenado sp_executesql
Para ejecutar sql dinamico, se recomienda utilizar el procedimiento almacenado sp_executesql, en lugar de una instrucción EXECUTE.
-
sp_executesql admite la sustitución de parámetros
-
sp_executesql es más seguro y versátil que EXECUTE
-
sp_executesql 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 (muy simple) de sp_executesql.
DECLARE @sql nvarchar(1000) SET @sql = 'SELECT COD_PAIS, NOMBRE_PAIS, ACTIVO, FX_ALTA FROM PAISES' EXEC sp_executesql @sql
|
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 el uso de sp_executesql con parámetros:
DECLARE @sql nvarchar(1000), @paramDefinition nvarchar(255), @paramValue char(3) SET @paramDefinition = '@codPais char(3)' SET @paramValue = 'ESP'SET @sql = 'SELECT COD_PAIS, NOMBRE_PAIS, ACTIVO, FX_ALTA FROM PAISES WHERE COD_PAIS = @codPais' EXEC sp_executesql @sql, @paramDefinition, @paramValue
|
|
| |
 |
Excelente tuto
por
Arturo Guevara
Respuesta recibida el [13/03/2008 05:36:40]
|
 |
Hola que tal, quisiera felicitarte por este excelente trabajo desarrollado por tí me resultó bastante entendible y de igual forma muy ejemplificado. Salu2 espero sigas presentando trabajos como este
|
| |
 |
Quitar Repetido
por
Kelvy
Respuesta recibida el [24/03/2008 12:47:07]
|
 |
Hola tengo una base de datos que tiene registros repetidos en todos los campos exepto el primero que el idexp y quisiera que me ayuden porque no he podido hacerlo. ah tengo qure eliminar los registros repetido.
|
| |
 |
Excelente tutorial
por
Jamas
Respuesta recibida el [31/03/2008 03:49:34]
|
 |
Que mas como van, quiero dar las gracias por excelente tutorial, bastante entendible, con todos los temas muy bien abordados.
|
| |
 |
GRACIAS
por
JAZMIN
Respuesta recibida el [13/04/2008 09:30:40]
|
 |
Ojala todos los tutoriales fueran tan buenos como este...m fue muy util
|
| |
 |
Maravilloso tutorial
por
Jesús
Respuesta recibida el [09/05/2008 01:41:14]
|
 |
Te envío un cordial saludo y una felicitación enorme por este excelente turial. Muy entendible y abarcando los conceptos mas utilizados de Transact. Soy nuevo en esto y creeme que con tu tutorial aprendí desde lo básico a cosas mas avanzadas. Gracias!!!!
|
| |
 |
Muy bien explicado y sencillo
por
Nacho
Respuesta recibida el [19/05/2008 08:33:12]
|
 |
Gracias por estos pequeños tutoriales que nos son de gran ayuda.
|
| |
 |
Excelente tutorial
por
roxy
Respuesta recibida el [14/07/2008 11:48:00]
|
 |
hola gracias por compartir este tutorial en la web. A mi en lo personal me a servido muchisimo ya que no tenia nada de practica en la programacion y gracias a este documento se me ha facilitado mucho ponerme al corriente con el lenguaje.
|
| |
 |
Este Tutorial es el Mejor
por
Hector
Respuesta recibida el [25/07/2008 08:19:58]
|
 |
Eres un Master, sigue así. Existos desde Rep. Dominicana
|
| |
 |
gracias
por
ciro
Respuesta recibida el [31/07/2008 06:12:47]
|
 |
gracias por la informacion es muy buena ... !!
|
| |
 |
FELICITACIONES
por
Manuel Ortega
Respuesta recibida el [11/08/2008 01:37:30]
|
 |
Buen dia, estimado lo felicito por este buen tutorial acerca de T-SQL, soy nuevo en esto! y me estas ayudando mucho.... DIOS TE BENDIGA, y seguire leyendo mas...
SALUDOS DESDE HONDURAS, CENTRO-AMERICA
|
| |
 |
Excelente
por
Cynthia
Respuesta recibida el [26/08/2008 06:21:07]
|
 |
Pase mucho rato tratando de entender el funcionamiento del sp_executesql, pero no lo entendía, esta explicación fue sumamente facil y util
;)
|
| |
 |
Consulta
por
Alex
Respuesta recibida el [16/09/2008 04:43:41]
|
 |
Como puedo hacer para consulatr datos de una tabla y actualizarlos en la misma dependiendo de un parametro utilizado
|
| |
 |
GRACIAS SIGAN ADELANTE
por
carlitaa
Respuesta recibida el [23/11/2008 03:34:47]
|
 |
Hola muchas gracias, todo el material que encontre aqui es facil de aprender. Gracias :)
|
| |
 |
Muy bueno
por
Max
Respuesta recibida el [27/11/2008 09:12:13]
|
 |
Muchas gracias..........
|
| Añadir comentario ... |
Para preguntar utiliza los foros
|
|

|
SQL dinámico en Transact SQL |
|
Autor:
Pedro Herrarte Sánchez
|
|
Visitas:
8685 |
Fecha de publicación:
12/01/2008 |
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.
Posee mas de diez años de experiencia trabajando para las principales empresas de España.
Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.
Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).
Es fundador, diseñador y programador de www.devjoker.com. |
|
Visitas:
84
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
583
|
Comentarios:
1
|
Archivo:
Articulos
|
Visitas:
167
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
130
|
Comentarios:
5
|
Archivo:
Articulos
|
Visitas:
572
|
Comentarios:
4
|
Archivo:
Articulos
|
Visitas:
1768
|
Comentarios:
6
|
Archivo:
Articulos
|
Visitas:
276
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
727
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
3122
|
Comentarios:
4
|
Archivo:
Articulos
|
Visitas:
546
|
Comentarios:
0
|
Archivo:
Articulos
|
|
|
|
 |
| Encuesta |
|
¿A que perfil te adaptas mejor? |
|
|
|
|
|
|
|
|
 |