Conheça também: Onmasters . Ofertas . Divulgue! . Vai.la . Geraboleto . Baixa.la . Assista.la . Joga.la
» Início » Desenvolvimento » Banco de dados e SQL » SQL Server 2005 T-SQL Tips: Concatenando e Agrupando -->
 
Avaliação: | Publicado em: 05/02/2008
SQL Server 2005 T-SQL Tips: Concatenando e Agrupando


Agrupamento com CLR

A partir do SQL Server 2005, é possível utilizar o CLR (Common Language Runtime) do framework .NET juntamente com o SQL Server 2005. Não entrarei em detalhes a cerca da utilização do CLR, mas em linhas gerais, é possível codificar instruções para manipulação de dados através do C#, VB.NET ou alguma outra linguagem habilitada ao framework .NET capaz de gerar um Assembly. Para demonstrar como o CLR pôde ser utilizado para concatenar os registros, foi utilizado um dos tutoriais disponíveis na instalação do SQL Server 2005. Esse tutorial possui o projeto em C# demonstrando como criar o assembly necessário.

Para utilizar o CLR, é necessário configurar o SQL Server para habilitar a utilização desse recurso e posteriormente carregar o assembly no SQL Server.

-- Habilita o uso do CLR
sp_configure 'clr enabled', 1
RECONFIGURE WITH OVERRIDE

-- Muda o contexto do banco de dados
Use Testes;

-- Carrega o Assembly para o SQL Server
CREATE ASSEMBLY StringUtilities FROM
'D:\StringUtilities.dll'
WITH PERMISSION_SET = SAFE;
GO

Após o assembly estar disponível, functions, stored procedures, agregações, etc que precisarem utilizá-lo devem referenciá-lo. Certifique-se de colocar a DLL no local correto para que o script funcione.

-- Cria uma função com base no CLR desenvolvido
CREATE AGGREGATE Concatenate(@input nvarchar(4000))
RETURNS nvarchar(4000)
EXTERNAL NAME [StringUtilities].[Microsoft.Samples.SqlServer.Concatenate];
GO

O código acima criou uma função de agregação para concatenar valores. Algumas funções de agregação como SUM e COUNT são conhecidas, mas através do CLR, é possível criar agregações próprias. As agregações definidas via CLR também podem resultar resultados númericos, mas não necessariamente. Essa função de agregação irá agrupar valores textuais. Como toda agregação, a cláusula GROUP BY faz-se necessária.

-- Executa uma consulta contatenando os telefones e agrupando por cliente
SELECT
 CliNome As Cliente,
 dbo.Concatenate(TelTipo + ':' + CAST(TelDDD AS CHAR(2)) +
  '-' + LEFT(TelNumero,4) + '-' + RIGHT(TelNumero,4)) As Contato
FROM
 tblClientes As CLI
 INNER JOIN tblTelefones As TEL ON CLI.CliCodigo = TEL.CliCodigo
GROUP BY
 CliNome

Essa técnica é poderosa e mais escalável que as anteriores dado a sua facilidade de reutilização. Uma vez que a função de agregação tenha sido definida, a mesma pode ser utilizada em outras consultas. A limitação é que agregações, assim como qualquer estrutura CLR no SQL Server 2005, está limitada a 8000 caractéres.


Eh massa mais naum consigo instala tem como ajudar ::?? Pelo Amor de Deus MAIS SERIO Mermu ajuda aeee Se Pode=D

Fica Com Deus