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:
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
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
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
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.
Comments
Anonymous
June 16, 2011
Muito bom o psot valeu.Anonymous
August 05, 2014
Ótimo post. Já possuo conhecimentos de MySQL, mas quero me especializar no SQL server, me indicaram o Curso Adv, aqui no Rio de Janeiro, vc possui referências?