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 ...
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
Funciones en Transact SQL
Procedimientos almacenados en Transact SQL

Afiliados
La Web del programador
MundoProgramacion


 

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


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: 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
Categorias: ASP.NET
Visitas: 583 | Comentarios: 1 | Archivo: Articulos
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 167 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 130 | Comentarios: 5 | Archivo: Articulos
Categorias: TFS
Visitas: 572 | Comentarios: 4 | Archivo: Articulos
Categorias: Transact-SQL|LinQ
Visitas: 1768 | Comentarios: 6 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 276 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 727 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 3122 | Comentarios: 4 | Archivo: Articulos
Categorias: C#
Visitas: 546 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET

Útimos temas recibidos en los foros ...
tunning exceptions por lordaficeo ... [ORACLE] 0 04/12/2008
Exception por lordaficeo ... [ORACLE] 0 04/12/2008
Curso de Oracle 10g en video por alexxe ... [ORACLE] 9 02/03/2008
ejemplos de diferencia entre arreglos estaticos y arreglos dinamicos; como utilizar los metodos en un arreglo por caliel ... [C#] 13 01/11/2007
codigo de factura por edu ... [C#] 0 03/12/2008
base de datos por edu ... [C#] 0 03/12/2008
mostrar datos de sql server en visual basic .net mediante un textbox por netcarl ... [SQL Server] 0 03/12/2008
simulador de red por gabriel ... [C#] 0 03/12/2008
WebService por zill ... [ASP.NET] 0 03/12/2008
Clases para controlar un TextBox por Lee ... [C#] 0 03/12/2008
Como enviar un correo desde visual basic por Stan martinni ... [Visual Basic 6.0] 7 28/04/2007
programas en c# por stefania ... [C#] 0 03/12/2008

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 ...
02/10/2006 La clase System.Array    forma parte de...Tutorial C#
31/03/2006 Tipos de datos en PL/SQL    forma parte de...Tutorial PL/SQL
01/04/2006 Estructuras de control en PL/SQL    forma parte de...Tutorial PL/SQL
01/01/2006 Borrado de datos. DELETE    forma parte de...Tutorial SQL
21/07/2007 Insertar datos en Transact SQL    forma parte de...Tutorial de Transact SQL
31/03/2006 Operadores en PL/SQL    forma parte de...Tutorial PL/SQL
04/03/2006 Bloques PL/SQL    forma parte de...Tutorial PL/SQL
24/07/2006 SQL Dinamico    forma parte de...Tutorial PL/SQL
28/06/2006 Excepciones en PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]