SQL Server 2008: workshop para desenvolvedores

Hoje apresentei um workshop para desenvolvedores em um cliente sobre o que tem de “novo” no SQL Server 2008 (se é que em Dezembro de 2010 ainda podemos chamar de novo) . Tendo desenvolvimento no meu sangue, este é um dos assuntos que eu mais gosto de apresentar. Escolhi então uma lista de tópicos, entre meus assuntos preferidos, e apresentei junto a algumas demonstrações.

Achei que seria uma boa idéia publicar parte este conteúdo aqui, além dos scripts que utilizei para demonstrar as features, já que muita gente ainda usa SQL Server 2005, 2000 e até mesmo 7.0 e 65. Na verdade, não é difícil encontrar entre meus clientes empresas que ainda utilizem SQL Server 6.0.

Espero que seja útil para vocês também!

Operadores Compostos

Executam uma operação e atribuem o resultado ao seu retorno

Exemplo:

DECLARE @A INT = 25

  SET @A += 25

Resultado: @A = 50

Outros Operadores Compostos podem ser utilizados. Considere o exemplo abaixo:

DECLARE @A INT = 38

Operador Operação Exemplo
+= Soma

@A += 2 resulta em 40

-= Subtração

@A -= 2 resulta em 36

*= Multiplicação

@A *= 2 resulta em 76

/= Divisão

@A /= 2 resulta em 19

%= Módulo (resto)

@A %= 2 resulta em 0

&= Operação Binária AND

@A &= 2 resulta em 2

^= Operação Binária EXCLUSIVE OR

@A ^= 2 resulta em 36

|= Operação Binária OR

@A |= 2 resulta em 38

 

Exemplo completo:

image

TRY...CATCH

Implementa tratamento de erro para T-SQL de forma similar a C++/C#.

  BEGIN TRY

  SELECT 1/0

  END TRY

  BEGIN CATCH

  SELECT 'Tratamento do Erro'

  END CATCH

  • Trata erros de execução com severidade maior que 10 que não encerrem a conexão
  • Se não tiver erro, a execução *** o bloco CATCH
  • É possível tratar o erro obtendo detalhes sobre a exceção:
    • ERROR_NUMBER()
    • ERROR_SEVERITY()
    • ERROR_STATE()
    • ERROR_PROCEDURE()
    • ERROR_LINE()
    • ERROR_MESSAGE()

 

Exemplo Completo

image

Parâmetros de tipo TABLE

Permite enviar múltiplas linhas de dados para um comando T-SQL ou Stored Procedure. Exemplo:

 

CREATE TYPE Cliente AS TABLE

  (Nome CHAR(4), Senha CHAR(4))

  DECLARE @Senhas AS Cliente

  INSERT INTO @Senhas

  ('João','pass')

  • Benefícios:
    • Permite utilização de lógica complexa em uma simples rotina
    • Reduz “round trips” ao servidor
    • Modelo único de programação
  • Restrições
    • SQL Server não mantém estatísticas de colunas
    • Quando passada como um parâmetro, a variável é READ ONLY (não permite DML)
    • Não pode ser o destino de um SELECT INTO ou INSERT EXEC

 

Exemplo Completo

image

MERGE

Realiza operações de INSERT, UPDATE ou DELETE para sincronizar tabelas. Exemplo:

MERGE <destino> AS Target

  USING <origem> AS Source

  ON <condicao>

  WHEN MATCHED THEN <operacao>

  WHEN NOT MATCHED BY TARGET THEN <operacao>;

  • Viabiliza a sincronização entre duas tabelas
  • Qualquer DML realizado respeita a integridade referencial
  • Também dispara quaisquer Triggers de DML
  • Pode ser utilizado com a cláusula OUTPUT para analisar o resultado
  • Permite analizar as condições:
    • WHEN MATCHED
    • WHEN NOT MATCHED BY SOURCE
    • WHEN NOT MATCHED BY TARGET

Exemplo Completo

image

Os principais exemplos foram estes. Além disso, passamos pelos novos tipos de dados do SQL Server 2008 (DATE, TIME, HierarchyID, Spatial Data), falamos sobre Filestream e sobre o ferramental do SQL Server 2008.