Dica do Mês – Função Next Value For

Olá, galera, bom dia.

Estamos chegando ao final do primeiro mês de 2016, nossa janeiro já esta indo embora. Como eu havia prometido no início deste ano, dentro do possível vou tentar trazer novas sessões para o meu blog e hoje falo do lançamento ou melhor o retorno de uma delas que vou batizar de “Dica do Mês“, é isso mesmo, no final de cada vez vou trazer uma simples dica relacionada a algo que utililizei em minhas atividades profissionais e acadêmicas.

O objetivo desta sessão como seu próprio nome diz, é compartilhar com você leitor ou seguidor do meu blog, uma simples dica que poderá fazer toda diferença no seu dia-á-dia ou simplesmente mostrar como utilizar um determinado recurso, funcionalidade e produto existente no SQL Server.

Neste primeiro post, quero destacar uma função muito legal que foi introduzida no Microsoft SQL Server 2012 e que recentemente em diversas dúvidas nos fóruns brasileiros de SQL Server acabou sendo destaque como solução. Estou me referindo ao função Next Valeu For fazendo uma tradução ao pé da letra podemos dizer: Próximo Valor para.

 

Sobre Next Value For –  Função que possui a característica possibilitar a geração de uma sequência de números para uma objeto específico, neste caso, o objeto que refiro é Sequence Object, funcionalidade também introduzida a partir do Microsoft SQL Server 2012, em conjunto com diversas novidades relacionadas a geração de sequência de valores numéricos.

A Next Value For é reconhecida como uma função não-determinística, desta maneira o sua utilização é somente permitida em conjunto com o objeto sequence, sendo este responsável pela geração da sequência numérica repassada para a função.

 

Sintaxe – A função Next Value For possui uma forma de uso bastante simples, uma das suas particularidades é permitir o uso da função Over como opção para geração de valores dentro da sequência.

  • Exemplo da Sintaxe: NEXT VALUE FOR [ database_name . ] [ schema_name . ]  sequence_name
    [ OVER (<over_order_by_clause>) ]

 

Argumentos – Com base em sua sintaxe podemos identificar quatro argumentos que formam sua estrutura de código, sendo eles:

  • database_name – Representa o nome do banco de dados que possui o objeto sequence;
  • schema_name –  Representa o nome do schema que contém o objeto sequence;
  • sequence_name – Representa o nome do objeto sequence responsável em armazenar e garantir a sequência numérica
  • Over_order_by_clause – Determina a ordem de organização e apresentação dos valores das linhas dentro de uma faixa de valores gerados pelo objeto sequence.

 

Exemplos: Vou destacar algumas maneiras de como utilizar a função Next Value For:

— Exemplo 1- Utilizando a função Next Valeu For para mostrar dois valores em sequência —

CREATE SCHEMA Test;
GO

CREATE SEQUENCE Test.Contador
START WITH 1
INCREMENT BY 1 ;
GO

SELECT NEXT VALUE FOR Test.Contador AS FirstUse;
SELECT NEXT VALUE FOR Test.Contador AS SecondUse;

Go

 

— Exemplo 2 – Utilizando a função Next Valeu For em conjunto com variável —

DECLARE @var1 bigint = NEXT VALUE FOR Test.Contador
DECLARE @var2 bigint ;
DECLARE @var3 bigint ;

SET @var2 = NEXT VALUE FOR Test.Contador ;

SELECT @var3 = NEXT VALUE FOR Test.Contador;
SELECT @var1 AS myvar1, @var2 AS myvar2, @var3 AS myvar3 ;
GO

 

— Exemplo 3 – Utilizando a função Next Valeu For em conjunto com constraint Default —

CREATE TABLE Test.MyTable
(
IDColumn nvarchar(25) PRIMARY KEY,
name varchar(25) NOT NULL) ;
GO

CREATE SEQUENCE Test.CounterSeq
AS int
START WITH 1
INCREMENT BY 1 ;
GO

ALTER TABLE Test.MyTable
ADD DEFAULT N’AdvWorks_’ + CAST(NEXT VALUE FOR Test.CounterSeq AS NVARCHAR(20)) FOR IDColumn;
GO

INSERT Test.MyTable (name) VALUES (‘Junior’) ;
INSERT Test.MyTable (name) VALUES (‘Galvão’) ;

INSERT Test.MyTable (name) VALUES (‘SQL’) ;
INSERT Test.MyTable (name) VALUES (‘Server’) ;
SELECT * FROM Test.MyTable;
GO

 

— Exemplo 4 – Utilizando a função Next Value For com ranking windows function —

Use AdventureWorks2012

Go

SELECT NEXT VALUE FOR Test.Contador OVER (ORDER BY LastName) AS ListNumber,
FirstName, LastName
FROM Person.Contact ;
GO


 

Muito bem galera, é isso, este é o primeiro post da nova sessão Dica do Mês, simples, direto, rápido e prático, espero que você tenha gostado.

Não deixe de me visitar, amanhã vou retornar com mais uma novidade, uma nova sessão chamada “Para que serve“, por enquanto uma surpresa.

Mais uma vez obrigado, nos encontramos novamente nos próximos posts.

Até mais.

Autor: Junior Galvão - MVP

Profissional com vasta experiência na área de Tecnologia da Informação e soluções Microsoft. Graduado no Curso Superior em Gestão da Tecnologia de Sistemas de Informação pela Uninove - Campus São Roque. Pós-Graduado no Curso de Gestão e Engenharia de Processos para Desenvolvimento de Software com RUP na Faculdade FIAP - Faculdade de Informática e Administração Paulista de São Paulo. Pós-Graduado em Gestão da Tecnologia da Informação Faculdade - ESAMC Sorocaba. Cursando Mestrado em Ciências da Computação - UFSCar - Campus - Sorocaba. Formação MCDBA Microsoft, autor de artigos acadêmicos e profissionais postados em Revistas, Instituições de Ensino e WebSistes. Meu primeiro contato com tecnologia ocorreu em 1995 após meus pais comprarem nosso primeiro computador, ano em que as portas para este fantástico mundo se abriram. Neste mesmo ano, comecei o de Processamento de Dados, naquele momento a palavra TI não existia, na verdade a Tecnologia da Informação era conhecida como Computação ou Informática, foi assim que tudo começou e desde então não parei mais, continuando nesta longa estrada até hoje. Desde 2001 tenho atuado como Database Administrator - Administrador de Banco de Dados - SQL Server em tarefas de Administração, Gerenciamento, Migração de Servidores e Bancos de Dados, Estratégias de Backup/Restauração, Replicação, LogShipping, Implantação de ERPs que utilizam bancos SQL Server, Desenvolvimento de Funções, Stored Procedure, Triggers. Experiência na Coordenação de Projetos de Alta Disponibilidade de Dados, utilizando Database Mirroring, Replicação Transacional e Merge, Log Shipping, para versões: 2000, 2005, 2008, 2008 R2, 2012 e 2014. Atualmente trabalho como Administrador de Banco de Dados no FIT - Instituto de Tecnologia da Flextronics, como também, Consultor em Projetos de Tunnig e Performance para clientes. Desde 2008 exerço a função de Professor Universitário, para as disciplinas de Banco de Dados, Administração, Modelagem de Banco de Dados, Programação em Banco de Dados, Sistemas Operacionais, Análise e Projetos de Sistemas, entre outras. Possuo titulação Oficial Microsoft MVP - SQL Server renovada desde 2007.

2 comentários em “Dica do Mês – Função Next Value For”

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s