Visual Basic em Português

Página pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia

SQL: Meses abreviados usando UDF's

Das operações efectuadas na aplicação o acesso a dados numa base de dados é normalmente uma das operações mais demoradas. Daí que a manipulação da informação é bastante importante de modo a reduzir ao máximo o tempo de resposta. As operações efectuadas no servidor são em regra mais rápidas e a correcta definição das tabelas e vistas é bastante importante. Outro dos pontos importantes quando se trabalha com um servidor é o espaço que cada tabela ocupa. Devem ser utilizados os mínimos de recursos de modo a que a nossa base de dados não aumente/ocupe o espaço ocupado desnecessariamente. Assim sendo é normal utilizar números ao invés de texto por estes ocuparem mesmos espaço.

O seguinte exemplo mostra como utilizar funções no servidor de modo a preparar uma vista para utilizar no VB. O objectivo é substituir os números dos meses (1 a 12) pela descrição abreviada. Esta operação pode ser efectuada usando UDF's (user defined function) que são adicionadas no SQL server.

Para adicionarmos uma nova UDF só temos de clicar com o botão direito sobre a pasta Functions e seleccionar Add New - Inline Function. De seguida adicionamos a seguinte função:

ALTER FUNCTION dbo.strMonth(@MonthNumber int)
RETURNS varchar(3)
AS
BEGIN
     /* Declaração da variável */
     DECLARE @myMonth varchar(3)
     Set @myMonth = ''

     /* Verificação da qual é o resultado */
     Select @myMonth = CASE
          WHEN @MonthNumber = 1 THEN 'Jan'
          WHEN @MonthNumber = 2 THEN 'Fev'
          WHEN @MonthNumber = 3 THEN 'Mar'
          WHEN @MonthNumber = 4 THEN 'Abr'
          WHEN @MonthNumber = 5 THEN 'Mai'
          WHEN @MonthNumber = 6 THEN 'Jun'
          WHEN @MonthNumber = 7 THEN 'Jul'
          WHEN @MonthNumber = 8 THEN 'Ago'
          WHEN @MonthNumber = 9 THEN 'Set'
          WHEN @MonthNumber = 10 THEN 'Out'
          WHEN @MonthNumber = 11 THEN 'Nov'
          WHEN @MonthNumber = 12 THEN 'Dez'
          ELSE '' END

     /* Retorna o resultado */
     RETURN @myMonth
END

Para a utilizar na nossa view (no servidor) é apenas necessário:

     SELECT id, mes, strMonth(mes) AS MesAbreviado FROM Tabela

Este é um pequeno exemplo de utilização de UDF's. Estas funções simplificam bastante o trabalho do programador uma vez que são feitas no próprio servidor e não no código da aplicação. Para alterar as letra para maiúsculas, por exemplo, era apenas necessário alterar esta pequena função sem que seja necessário alterar o código.


PS: Como sempre, qualquer dúvida, comentário ou correcção ao artigo é sempre bem vinda!

0 comentários:

Mensagens Recentes



Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico