Sei sulla pagina 1di 6

Bem vindo a DevMedia!

LOGIN: SENHA:

Tecnologias Revistas Cursos Pocket videos Frum Servios Publicar Compre Crditos Loja Virtual Assine

Esqueci minha senha

Cadastre-se

Novidade: DevMedia lana o DevWare - Saiba mais!


post favorito comentrios

CONSTRUINDO FUNES PARA SQL SERVER


Aprenda com exemplos prticos a construir funes para o SQL Server. Neste artigo exploramos os trs tipos possveis de funes construidas pelo usurios usando Transact-SQL.
Gostei (1) (0)
0

Sem rodeios: Funes em T-SQL so rotinas que retornam valores ou tabelas. Com elas voc poder construir vises parametrizadas ou ainda construir suas prprias

funes, semelhantes a DATE(), STUFF(), LTrim() dentre outras. Existem trs tipos de funes possveis. Segue-se um caso de uso prtico para cada uma delas: Exemplos: 1 Deseja-se retirar todos os espaos em branco de uma string qualquer. Vamos elaborar uma funo para retirar todos os espaos em branco de uma string qualquer com tamanho mximo de 1000 caracteres. Usaremos a funo built-in (funo interna do sql server) ltrim() que retira os espaos em branco do lado esquerdo e rtrim() que retira os espaos em branco da direita. A Tipo de funo: Scalar-valued user-defined function: CREATE FUNCTION TRIM(@ST VARCHAR(1000)) RETURNS VARCHAR(1000) BEGIN RETURN(LTRIM(RTRIM(@ST))) END

B Invocando uma Scalar-valued user-defined function: SELECT '>' + DBO.TRIM(' WELLYNGTON MOREIRA ')+'<' C Resultado obtido:

D Consideraes importantes:

i.

A funo criada de domnio do database ao qual ela foi criada,

assim sendo, para invoc-la de outro database se faz necessrio o uso da assinatura completa da funo: SELECT []..([parametros-opcioanais]...)

2 Deseja-se uma tabela com os registros de todos os tempos possveis em intervalos de minutos parametrizveis entre duas datas quaisquer. Como o problema requer o retorno de datas em intervalos de minutos, vamos criar uma tabela em nossa funo com um campo do tipo DATETIME, utilizando a funo built-in (funo interna do SQL Server) DATEADD() para incrementar uma data inicial at a data final desejada em intervalos de minutos = MINUTE. A Tipo de funo: Multi-statement table-valued function CREATE FUNCTION DtsMinutos(@min int, @dti datetime, @dtf datetime) RETURNS @tbl TABLE(dt datetime) AS BEGIN WHILE @dti BEGIN INSERT INTO @tbl(dt) VALUES (@dti) SET @dti = DATEADD(MINUTE,@min,@dti) END RETURN END B Invocando uma Multi-statement table-valued function: SELECT *

FROM

DtsMinutos(12,'2011-01-01 12:00','2011-01-01 17:00')

C Resultado obtido:

3 Deseja-se uma tabela com os FUNCIONRIOS contratados aps uma data especfica. Para este problema vamos supor uma tabela povoada com trs atributos: A matrcula do tipo int, o nome do tipo varchar(80) e dataContratacao do tipo dateTime com a data que o funcionrio foi contratado. A Tipo de funo: Inline table-valued function CREATE FUNCTION funcionariosApos(@dt datetime) RETURNS TABLE AS RETURN (SELECT * FROM FUNCIONARIO WHERE dataContratacao >= @dt)

B Invocando uma Multi-statement table-valued function: SELECT * FROM funcionariosApos('2000-01-01')

C Resultado obtido:

At a prxima e avante!

Wellyngton Luiz Cruz Moreira


Formado pela UNIT (Universidade Tiradentes-SE) em Processamento de Dados (1993), ps-graduado em Anlise de Sistemas pela Universidade Candido Mendes-RJ (2003). Como professor lecionou nos cursos de GRADUAO da UNIT/SE, Faculdade Leo Sampaio/CE, FJN/CE, UVA/CE e FASER/SE, lecionando as cadeiras ...

O que voc achou deste post? Gostei (1) (0)


0 COMENTRIO

Nenhum comentrio foi postado - seja o primeiro a comentar!

Cursos relacionados
Administrao do Firebird/InterBase Curso de Administrao do Microsoft SQL Server Ferramentas Administrativas do MySQL PL/SQL Oracle Administrao do Firebird/InterBase [Ver todos]

+SQL
Publicidade

Servios
Inclua um comentrio Adicionar aos Favoritos Marcar como lido/assistido Incluir anotao pessoal Verso para impresso

DevMedia | Anuncie | Fale conosco Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03

Leia mais em: CONSTRUINDO FUNES PARA SQL SERVER http://www.devmedia.com.br/construindo-funcoespara-sql-server/20934#ixzz2WfwgFLib

Potrebbero piacerti anche