InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial de Transact SQL
Introducción a Transact SQL
Programación con Transact SQL
Fundamentos de Transact SQL
Tipos de datos en Transact SQL
Variables en Transact SQL
Equivalencia de datos de SQL Server y .NET
Operadores en Transact SQL
Estructuras de control en Transact SQL
Control de errores en Transact SQL
Consultar datos en Transact SQL
Consultas agregadas
Select FOR XML
Operaciones con conjuntos.
Insertar datos en Transact SQL
Actualizar datos en Transact SQL
Borrar datos en Transact SQL
Transacciones en Transact SQL
Procedimientos almacenados en Transact SQL
Funciones en Transact SQL
Funciones integradas de Transact SQL (I)
Triggers en Transact SQL
Cursores en Transact SQL
SQL dinámico en Transact SQL
También puedes ver ...
Simular TRUNC en SQL Server
Cómo insertar un fichero .xml en un campo de tipo XML de SQL server 2005 o 2008
SET IDENTITY_INSERT ON y LinqToSQL
SQL Server 2008
LinQ To SQL - Un ejemplo sencillo
Formatear números en SQL Server
Leer un campo XML de SQL Server 2005 con C#
Funciones integradas de Transact SQL (I)
Cursores en Transact SQL
Triggers en Transact SQL


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):

  • La instrucción EXECUTE - o simplemente EXEC
  • El procedimiento almacenado sp_executesql

    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

 


Inicio | Tutorial de Transact SQL Cursores en Transact SQLTutorial de Transact SQL Versión para imprimir Foros de consulta

 
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..........

 
llamar funciones lineales desde power builder por jose luis
Respuesta recibida el [07/02/2009 11:51:27]
HOLA experto ,tengo un gran problema no puedo imbocar una funcion lineal desde el power builder mas aun ,la funcion lineal recibe parametros de entrada q es un campo item_Articulo 
y desde el power no acepta ,trabajar funcion lineal con variables ,solo parametros numeros ,no me serviria
asi tengo q llamarla
dbo.f_fecha_orden(detalle_requisicion.cod_item_articulo) para q la funcion reciba el item y devuelva la consulta q trae 5 campos ,como`podrai hacer???
jose_luis_vergara@yahoo.com

 
Eres una gran persona Pedro He... por Donnie Leonardo
Respuesta recibida el [21/02/2009 08:03:10]
Eres una gran persona Pedro Herrarte Sanchez te deseo lo mejor y bendiciones en todos tu projectos y sigues hasi ayudando a todas las personas que quieran aprender te felicito por este gran tutorial me ha ayudado vastante en mi carrera profesional GARCIAS!!!!!

 
ES UN GRAN MATERIAL por LUIS TORRES.NET
Respuesta recibida el [10/03/2009 10:41:39]
GRACIAS POR COMPARTIR ESTA INFORMACION 
ES MUY ELEJANTE DE SU PARTE COMPARTIR ESTE TUTORIAL LE AGRADESCO DE TODO CORAZON GRACIAS

 
Felicitaciones por Sócrates CM
Respuesta recibida el [17/04/2009 08:44:32]
Primeramente un cordial saludo, chispas la verdad un excelente trabajo, gracias por el tutorial amigo....

 
Infinitas Gracias por Eddie Lopez
Respuesta recibida el [24/04/2009 07:21:24]
la verdad me quito el sombrero para el quien hizo este tutorial, y la verdad infinitas gracias, que buenisima onda comportir sus conocimientos, espero algun dia llegar como este autor

 
Felicitaciones por Victor Manuel
Respuesta recibida el [21/05/2009 10:36:33]
Muchas gracias por comparttir sus conocimientos, esta muy completa la documentación. 

 
Insert por Susan
Respuesta recibida el [06/08/2009 11:34:07]
Hola, muy bien, pero como seria al usar un INSERT?

 
Pagina Web de Ejercicios SQL por Martin Capristan
Respuesta recibida el [24/10/2009 07:41:44]
Muy bueno el Manual lo baje y lo estoy aplicando, una pagina q me recomiende dodne tenga ejercicios dodne se pueda aplica r los diferenets temas tratados en el manual. Gracias

 
BIEN ESPLICADO por GIAN CARLOS
Respuesta recibida el [28/10/2009 11:32:45]
MUY BIEN AH..TE FELICITO MUY BIEN SE TE ENTIENDE

 
Muy Bien por David
Respuesta recibida el [26/02/2010 03:30:36]
EXCELENTE BUEN APORTE TODO ME PARECE BIEN EXPLICITO...UN TUTORIAL SUMAMENTE COMPLETO


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial de Transact SQL Cursores en Transact SQLTutorial de Transact SQL Versión para imprimir

SQL dinámico en Transact SQL
Autor: Pedro Herrarte Sánchez
Visitas: 23184 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: 96 | Comentarios: 2 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 798 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 753 | Comentarios: 3 | Archivo: Articulos
Visitas: 3158 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14520 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1484 | Comentarios: 3 | Archivo: Articulos
Visitas: 692 | Comentarios: 2 | Archivo: Articulos
Visitas: 369 | Comentarios: 0 | Archivo: Articulos
Visitas: 2022 | Comentarios: 2 | Archivo: Articulos
Categorias: C#

Útimos temas recibidos en los foros ...
certifiado de afiliacion por luz mary gerena ... [Actualidad] 2 26/02/2010
Ayuda por Nando ... [ORACLE] 1 12/03/2010
no me acuerdo donde estoy afiliada por girasol ... [Actualidad] 0 12/03/2010
quiero saber a que fondos estoy afiliado en pensiones y cesantias por rigo ... [Actualidad] 7 28/02/2010
pensiones por 29285524 ... [Access] 0 12/03/2010
certificado de porvenir por labar ... [Actualidad] 23 02/03/2010
Certificado de afiliacion Pensiones y Cesantias por VIVIANA ... [Actualidad] 2 10/03/2010
AYUDA COMANDOS BASICOS MSDOS!! por (L)MSDOS(L) ... [MS DOS] 24 12/03/2010
mananis por mananis ... [Actualidad] 0 12/03/2010
CERTIFICADO DE PENSIONES Y CESANTIAS PORVENIR por ABELLO ... [Actualidad] 0 12/03/2010
Solicitud certificado de afiliaciones a pensiones y cesantias proteccion por hz ... [Actualidad] 55 10/02/2010
certificado de pensiones y cesantias que me exigen para trabajar por viviana ... [Actualidad] 1 12/03/2010

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
19/09/2007 Triggers en Transact SQL    forma parte de...Tutorial de Transact SQL
01/01/2005 Conceptos básicos.    forma parte de...Iniciación a las bases de datos
28/06/2006 Procedimientos almacenados en PL/SQL    forma parte de...Tutorial PL/SQL
31/03/2006 Tipos de datos en PL/SQL    forma parte de...Tutorial PL/SQL
31/03/2006 Fundamentos de PL/SQL    forma parte de...Tutorial PL/SQL
05/12/2008 Instalar SQL server enterprise en Vista o XP
22/10/2005 Consultas combinadas. JOINS    forma parte de...Tutorial SQL
22/10/2005 Indices    forma parte de...Tutorial SQL
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL
12/01/2006 Programación con PL/SQL    forma parte de...Tutorial PL/SQL

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]