segunda-feira, 26 de abril de 2010

T-SQL no Sql Server 2008 - Primeira Parte

O T-SQL no SQL Server 2008 recebeu um refresh com algumas novidades na sintaxe e em algumas melhorias em alguma funções já existentes. Vamos repassar estas novidades neste artigo, com alguns exemplos bem práticos para que você possa entender com clareza e já aplicar no seu dia-a-dia.

A primeira novidade é a possibilidade de declarar e inicializar uma variável com apenas um comando. Agora podemos declarar e inicializar uma variável com apenas uma linha de código ao invés de implementar um DECLARE e depois uma atribuição com SET ou SELECT. Até a verão 2005, para inicializar uma variável fazíamos assim:

DECLARE @I_VALOR INT
DECLARE
@N_VALOR NUMERIC(10,2)

SELECT
    
@I_VALOR=1,
    
@N_VALOR=23.2


E agora podemos fazer assim:


DECLARE @I_VALOR INT = 1 

DECLARE @N_VALOR NUMERIC(10,2) =23.2

Outra novidade, são os operadores compostos, como os que temos no C++ ou C#, nos permitindo realizar operações de incrementação com um código muito mais enxuto. Onde antes fazíamos

DECLARE @I_VALOR INT
SET
@I_VALOR = 0

WHILE @I_VALOR<10BEGIN

  SET
@I_VALOR = @I_VALOR +1
  
PRINT 'Valor é: ' + CAST(@I_VALOR AS VARCHAR(10))
END


Agora podemos fazer:

DECLARE @I_VALOR INT = 0

WHILE @I_VALOR<10
BEGIN

  SET
@I_VALOR += 1
  
PRINT 'Valor é: ' + CAST(@I_VALOR AS VARCHAR(10))

END



Podemos usar os operadores compostos com os seguintes comandos:

+=  Adição e atribuição
-=   Subtração e atribuição
*=  Multiplicação e atribuição
/=   Divisão e atribuição
%= Modulo e atribuição
&= Comparação lógica e atibuição com E
|=   Comparação lógica e atibuição com OU

Uma novidade que achei bastante funcional é possibilidade de colocar vários rows em um insert statement. Veja o script:

USE tempdb;
  
IF OBJECT_ID('dbo.Clientes', 'U') IS NOT NULL
    
DROP TABLE dbo.Clientes;

CREATE TABLE dbo.Clientes

(

  
codigo        INT
    PRIMARY KEY
,
  
nome            VARCHAR(25) NOT NULL,
  
fone            VARCHAR(20) NOT NULL,
  
endereco        VARCHAR(50) NOT NULL

);

INSERT INTO dbo.Clientes(codigo, nome, fone, endereco)
  
VALUES

  
(1, 'cliente 1', '(111) 111-1111', 'endereço 1'),

  (
2, 'cliente 2', '(222) 222-2222', 'endereço 2'),

  (
3, 'cliente 3', '(333) 333-3333', 'endereço 3'),

  (
4, 'cliente 4', '(444) 444-4444', 'endereço 4'),

  (
5, 'cliente 5', '(555) 555-5555', 'endereço 5');


  
SELECT * FROM dbo.Clientes


Para mais informações sobre os ítens que estudamos, acompanhem estes links:
Novidades no T-SQL: http://msdn.microsoft.com/en-us/library/cc721270.aspx

Por hoje é só pessoal. Acompanhem os próximos artigos!



Nenhum comentário:

Postar um comentário

Leave your comment here!