ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Transact SQL 2005


Enviado por   •  31 de Mayo de 2012  •  2.980 Palabras (12 Páginas)  •  448 Visitas

Página 1 de 12

Transact SQL 2005

________________________________________

Este documento describe las nuevas caracteristicas de T-SQL para SQL Server 2005.

________________________________________

Introduccion

Microsoft Sql Server 2005 (YUKON) es un producto con muchas novedades comparándolo con su antecesor SQL 2000. Sin duda que uno de sus mayores cambios ha sido la inclusión del CLR dentro del motor de base de datos.

En este artículo nos concentraremos en algunas de las tantas novedades que nos trae Microsoft SQL 2005 en lo que respecta a Transact-SQL, las cuales serán de mucha utilidad para los desarrolladores de aplicaciones como así también para los DBA.

Transact SQL (TSQL) es el lenguaje que usamos para escribir : Store Procedures – Triggers – Querys – Etc.

Sin dudas que TSQL no dispone de las mismas habilidades y potencia que puede tener un lenguaje como C# o VB.NET. En Sql2005 veremos un cambio significativo en TSQL el cual nos ayudara en nuestro trabajo diario.

Antes de empezar les recomiendo que descarguen la versión Beta de Sql-Server June 2005 del siguiente link:

http://www.microsoft.com/downloads/details.aspx?FamilyId=B414B00F-E2CC-4CAB-A147-EACA26740F19&displaylang=en

Recomiendo que dicha instalación se realice en un ambiente de testing como podría ser una maquina Virtual.

Numerando Registros (RowId):

En muchas ocasiones es necesario poder obtener una columna con el número de registro o también poder generar un ranking. Hasta SQL2000 este tipo de operaciones no eran tan simples de realizar y no disponíamos de instrucciones directas. En TSQL 2005 disponemos de una serie de instrucciones las cuales nos hacen el trabajo mucho mas simple y eficiente. Veamos de qué se trata ello.

Row_Number: Esta nueva función de TSQL nos permitirá numerar los resultados de una query.

El siguiente ejemplo muestra el uso de esta función:

Use AdventureWorks

Go

Select row_number() over(order by name) as rowid,

name,productNumber,productId from Production.product where productnumber like 'be%'

order by name

El resultado obtenido de esta query es el siguiente:

rowid name productNumber productId

-------- -------------------------------------------------- ------------------------- ---------

1 BB Ball Bearing BE-2349 3

2 Headset Ball Bearings BE-2908 4

A las funciones de numeración como Row_number() le podemos agregar la cláusula Partition la cual nos permitirá numerar pero haciendo un corte y reiniciando el numerador a partir de ese corte. En el siguiente ejemplo hacemos uso de ello:

Use AdventureWorks

Go

Select row_number() over(partition by color order by name) as rowid,

name,productNumber,productId,color from Production.product

where color in ('Blue','Silver')

order by color,name

Este ejemplo nos retornara un listado de productos donde el color sea Blue o Silver y los numerara con rowid pero al cambiar el color el numerador volverá a comenzar.

rowid name productNumber productId color

------- --------------------------------------------- ------------------------- ----------- ---------------

25 Touring-3000 Blue, 58 BK-T18U-58 959 Blue

26 Touring-3000 Blue, 62 BK-T18U-62 960 Blue

1 Chain CH-0234 952 Silver

2 Chainring Bolts CB-2903 320 Silver

3 Chainring Nut CN-6137 321 Silver

4 Freewheel FH-2981 332 Silver

Conclusiones: La instrucción Row_number() nos da la habilidad de poder numerar los resultados de nuestras querys, este tipo de tareas eran muy solicitadas por los usuarios en la versión 2000 y no existía una solución directa como la que podemos tener ahora con Sql2005. De todas maneras vale aclarar un concepto: Los motores de base de datos están pensados para trabajar en conjunto de registros y no registró a registro, por lo cual les recomiendo que el uso de numeradores lo utilicen con criterio y que no se lo utilice para recorrer registró a registro (cursores).

TOP @n:

Tsql2005 incorpora una nueva funcionalidad a la instrucción TOP, hasta la versión 2000 no se le podía pasar un parámetro variable a la misma, en la versión 2005 esta funcionalidad se ha agregado. El siguiente ejemplo nos muestra como se implementa:

USE ADVENTUREWORKS

GO

DECLARE @NUM INT

SET @NUM = 3

SELECT TOP(@NUM) * FROM PRODUCTION.PRODUCT

...

Descargar como (para miembros actualizados)  txt (15.9 Kb)  
Leer 11 páginas más »
Disponible sólo en Clubensayos.com