Short Scripts – Fevereiro 2020

Neste primeiro post de 2020 da sessão Short Scripts, você vai encontrar 16 exemplos diferentes de como podemos criar em tempo de execução sequências numéricas de números inteiros.


Olá bom dia, como vai?

Seja bem-vindo, em mais um post da sessão Short Scripts, parece que foi então o último post publicado desta sessão e foi mesmo, já estamos em 2020.

Da mesma forma que post anterior publicado em 2019, este primeiro post dedicado ao Short Script também esta ocorrendo entre a madrugada do dia 04/02 e 05/02, as férias acabaram e com ela a volta ao batendo já se iniciou.

Mesmo com este horário meio fora do comum,são exatamente 00:25, isso mesmo, madrugada como já destaquei, que o post de número 40 desta tradicional sessão começa a sair do forno.

Mantendo a tradição estou retornando com mais um conjunto dos “curtos ou pequenos” scripts catalogados e armazenados em minha biblioteca pessoal de códigos relacionados ao Microsoft SQL Server e sua fantástica linguagem de desenvolvimento Transact-SQL.

Como promessa é dívida e deve ser cumprida “ou melhor” compartilhada, vou pagar a minha mais uma vez neste madrugada, feita no encerramento do post anterior publicado no mês de novembro em 2019, se por acaso você ainda não acessou o mesmo, calma, fique tranquilo, tudo vai dar certo, no encerramento deste post você terá a sua disposição a relação das últimas cinco publicações relacionadas aos Short Scripts.

Vamos caminhar mais um pouco então……..

O post de hoje

Para este post, não vou exatamente compartilhar um conjunto variado de scripts que foram catalogados nos últimos meses, ao contrário, vou disponibilizar um conteúdo que foi elaborado hoje, dedicado de forma única e exclusiva a demonstrar como podemos criar de diversas formas uma sequência numérica de números no Microsoft SQL Server, através de um mix de técnicas mais antigas em conjunto com funcionalidades e atuais.

Em conjunto com a sequência numérica, os exemplos de código aqui compartilhados se relacionam com os seguintes assuntos:

● Cláusula Where;
● Comando Begin;
● Comando Begin Transaction;
● Comando Case;
● Comando Commit Transaction;
● Comando Create Function;
● Comando Create Procedure;
● Comando Create Table;
● Comando Declare;
● Comando Distinct;
● Comando End;
● Comando Insert;
● Comando Insert;
● Comando Order By;
● Comando Select;
● Comando While;
● CTE;
● CTE Recursiva;
● Cursor;
● DataType Int;
● Declaração de Variáveis;
● Default Values;
● Diretiva Set;
● Diretiva Set NoCount;
● Função Concat();
● Função Try_Convert();
● Function;
● Junção Direta;
● Números Inteiros;
● Opção Identity();
● Operador Cross Join;
● Operadores compostos;
● Select Derivada;
● Select Values;
● Stored Procedure; e
● Subquery.

Chegou a hora, mãos nos teclados, a seguir apresento os códigos e exemplos selecionados para o Short Script – Fevereiro 2020. Vale ressaltar que todos os scripts publicados nesta sessão foram devidamente testados, mas isso não significa que você pode fazer uso dos mesmo em seu ambiente de produção, vale sim todo cuidado possível para evitar maiores problemas.

Fique à vontade para compartilhar, comentar e melhorar cada um destes códigos.


Short Scripts

— Exemplo 1 — While —
Set NoCount On
Go

Declare @NumeroInicial Int=1, @NumeroFinal Int=100

While @NumeroInicial <= @NumeroFinal
Begin

Select @NumeroInicial As Numeracao

Set @NumeroInicial +=1
End
Go

— Exemplo 2 — Insert Into Default Values + Go com número de recursividade —
Create Table TabelaNumeracao
(Numero Int Identity(0,2))

Insert Into TabelaNumeracao Default Values
Go 1000

Select * From TabelaNumeracao
Go

— Exemplo 3 — Cursor —
Declare @Contador Int=0, @NumeroAtual Int=0

Declare Cursor_Numeracao Cursor For
Select * From TabelaNumeracao
Order By Numero Desc

Open Cursor_Numeracao
While @Contador <= (Select Max(Numero) From TabelaNumeracao)
Begin

Fetch Next From Cursor_Numeracao
Into @NumeroAtual

Print Concat(‘O número atual é: ‘, @NumeroAtual)

Set @Contador +=2

End
Go

Close Cursor_Numeracao
Deallocate Cursor_Numeracao
Go

— Exemplo 4 — CTE Recursiva —
Declare @NumeroInicial Int=1, @NumeroFinal Int=100

;With CTENumeracaoSequencial (Numeracao)
As
(Select @NumeroInicial As Numero
Union All
Select 1+Numeracao As NumeroSequencial From CTENumeracaoSequencial
Where Numeracao < @NumeroFinal)

Select * From CTENumeracaoSequencial
Go

— Exemplo 5 — Multíplas CTE Recursivas —
;WITH CTEUm
As
(Select 1 As Um Union ALL SELECT 1)
,CTEUnidade
As
(Select 1 As Unidade From CTEUm C1, CTEUm C2)
,CTEDezena
As
(Select 1 As Dezena From CTEUnidade C1, CTEUnidade C2)
,CTECentena
As
(Select 1 As Centena From CTEDezena C1, CTEDezena C2)
,CTEMilhar
As
(Select 1 As Milhar From CTECentena C1, CTECentena C2)
,Numeracao
As
(Select ROW_NUMBER() OVER (ORDER BY (SELECT 1)) as Numeracao From CTEMilhar)
Select * From Numeracao
Go

— Exemplo 6 — CTE com Operador de Junção Cross Join —
;With CTENumeracao (Numero)
As
(
Select * From
(Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoUnidade (NumeroUnidade)
)
Select Unidade.Numero+Dezena.Numero*10+Centena.Numero*100+Milhar.Numero*1000 As Numero
From CTENumeracao Unidade
Cross Join CTENumeracao Dezena
Cross Join CTENumeracao Centena
Cross Join CTENumeracao Milhar
Order By Numero
Go

— Exemplo 7 — CTE com Junção Cruzada Direta —
;With CTENumeracao (Numero)
As
(
Select * From
(Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoUnidade (NumeroUnidade)
)
Select Unidade.Numero+Dezena.Numero*10+Centena.Numero*100+Milhar.Numero*1000 As Numero
From CTENumeracao Unidade, CTENumeracao Dezena, CTENumeracao Centena, CTENumeracao Milhar
Order By Numero
Go

— Exemplo 8 — Objeto Sequence —
Create Sequence dbo.Numeracao As Int
Start With 1
Increment By 1
MinValue 1
MaxValue 5000
Cycle
Go

Select Next Value For dbo.Numeracao As NumeroLinha, Numero From TabelaNumeracao
Go

Alter Sequence dbo.Numeracao
Restart With 1
Go

— Exemplo 9 — Select com Função Row_Number() —
Select Row_Number() Over (Order By Numero) NumeroLinha,
Numero
From TabelaNumeracao
Go

— Exemplo 10 — Stored Procedure —
Truncate Table TabelaNumeracao
Go

Create Or Alter Procedure P_NumeracaoSequencial @NumeracaoSequencial Int
As
Set NoCount On

Declare @Contador Int=1

While @Contador <= @NumeracaoSequencial
Begin
Begin Transaction

Insert Into TabelaNumeracao With (TabLockX) Default Values

Commit Transaction

Set @Contador += 2
End
Go

— Executando —
Execute P_NumeracaoSequencial 100
Go

Select * From TabelaNumeracao
Go

— Exemplo 11 — User Defined Function —
Create Or Alter Function F_SequencialNumerica (@Numero Int=0)
Returns Table
Return
Select Unidade+Dezena*10+Centena*100+Milhar*1000 AS Numeracao From
(Select 0 AS Unidade Union Select 1 Union Select 2 Union Select 3 Union Select 4
Union Select 5 Union Select 6 Union Select 7 Union Select 8 Union Select 9) SequenciaUnidade,
(Select 0 AS Dezena Union Select 1 Union Select 2 Union Select 3 Union Select 4
Union Select 5 Union Select 6 Union Select 7 Union Select 8 Union Select 9 ) SequenciaDezena,
(Select 0 AS Centena Union Select 1 Union Select 2 Union Select 3 Union Select 4
Union Select 5 Union Select 6 Union Select 7 Union Select 8 Union Select 9 ) SequenciaCentena,
(Select 0 AS Milhar Union Select 1 Union Select 2 Union Select 3 Union Select 4
Union Select 5 Union Select 6 Union Select 7 Union Select 8 Union Select 9 ) SequenciaMilhar
Go

— Executando —
Select * From F_SequencialNumerica(0)
Where Numeracao=15
Go

— Exemplo 12 — Select … Values com Função Concat() e Operador de Junção Cross Join —
Select CONCAT(NumeroUnidade,NumeroDezena,NumeroCentena, NumeroMilhar) As ‘Caractere’,
(NumeroUnidade+NumeroDezena*10+NumeroCentena*100+NumeroMilhar*1000) As ‘Numerico’
From (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoUnidade (NumeroUnidade)
Cross Join (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoDezena (NumeroDezena)
Cross Join (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoCentena (NumeroCentena)
Cross Join (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoMilhar (NumeroMilhar)
Order By ‘Numerico’
Go

— Exemplo 13 — Select … Values com Função Concat() e Junção Cruzada Direta —
Select CONCAT(NumeroUnidade,NumeroDezena,NumeroCentena, NumeroMilhar) As ‘Caractere’,
(NumeroUnidade+NumeroDezena*10+NumeroCentena*100+NumeroMilhar*1000) As ‘Numerico’
From (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoUnidade (NumeroUnidade),
(Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoDezena (NumeroDezena),
(Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoCentena (NumeroCentena),
(Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoMilhar (NumeroMilhar)
Order By Numerico
Go

— Exemplo 14 — Select … Values com Funções Try_Convert() e Concat() com Junção Cruzada Direta —
Select Try_Convert(Int, CONCAT(NumeroUnidade,NumeroDezena,NumeroCentena, NumeroMilhar),0) As ‘Numerico’
From (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoUnidade (NumeroUnidade),
(Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoDezena (NumeroDezena),
(Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoCentena (NumeroCentena),
(Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As NumeracaoMilhar (NumeroMilhar)
Order By Numerico
Go

— Exemplo 15 — Select Tabela Derivada com Subquery Select … Values —
Select NumeroUnidade+NumeroDezena*10+NumeroCentena*100+NumeroMilhar*1000 As Numero
From
(Select * From (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As Numeracao (NumeroUnidade)) As Unidade,
(Select * From (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As Numeracao (NumeroDezena)) As Dezena,
(Select * From (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As Numeracao (NumeroCentena)) As Centena,
(Select * From (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As Numeracao (NumeroMilhar)) As Milhar
Order By Numero
Go

— Exemplo 16 — Select Tabela Derivada com Função Convert() em conjunto com Select Tabela Derivada mais Subquery Select … Values —
Select Convert(Int, Numero) As Numero From
(
Select CONCAT(NumeroUnidade,NumeroDezena,NumeroCentena, NumeroMilhar) As Numero
From
(Select * From (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As Numeracao (NumeroUnidade)) As Unidade,
(Select * From (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As Numeracao (NumeroDezena)) As Dezena,
(Select * From (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As Numeracao (NumeroCentena)) As Centena,
(Select * From (Values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) As Numeracao (NumeroMilhar)) As Milhar
) As Numeracao
Where Numero>0
Order By Numero
Go


Muito bem, missão mais que cumprida!

Uma nova relação de short scripts acaba de ser compartilhada, mesmo sendo denominados shorts entre aspas “curtos ou pequenos”, posso garantir que todos estes exemplos são de grande importância, apresentam um valor e conhecimento do mais alto nível.

Chegamos ao final de mais um Short Scripts, espero que este material possa lhe ajudar, ilustrando o uso de alguns recursos e funcionalidades do Microsoft SQL Server.

Acredito que você tenha observado que estes códigos são conhecidos em meu blog, todos estão relacionados aos posts dedicados ao Microsoft SQL Server publicados no decorrer dos últimos anos.

Boa parte deste material é fruto de um trabalho dedicado exclusivamente a colaboração com a comunidade, visando sempre encontrar algo que possa ser a solução de um determinado problema, bem como, a demonstração de como se pode fazer uso de um determinado recurso.

Links

Caso você queira acessar os últimos posts desta sessão, não perca tempo acesse os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2019/11/15/short-scripts-novembro-2019/

https://pedrogalvaojunior.wordpress.com/2019/09/11/short-scripts-setembro-2019/

https://pedrogalvaojunior.wordpress.com/2019/06/08/short-scripts-junho-2019/

https://pedrogalvaojunior.wordpress.com/2019/03/15/short-scripts-marco-2019/

https://pedrogalvaojunior.wordpress.com/2018/11/20/short-scripts-novembro-2018/

Agradecimento

Obrigado mais uma vez por sua visita, fico honrado com sua ilustre presença ao meu blog, desejo e espero que você possa ter encontrado algo que lhe ajudou.

Volte sempre, nos encontraremos mais uma vez na sessão Short Scripts no post a ser publicado no mês de abril em 2020.

Um forte abraço, saúde e paz.

Até mais.

Microsoft informa que vai retirar do meio ambiente todo seu carbono emitido

Plano da empresa envolve se tornar carbono negativa até 2030 e retirar todo o carbono emitido por ela desde 1975


A Microsoft anunciou nesta quinta-feira (16), durante evento no seu campus em Redmond, Washington, metas para se tornar carbono negativa até 2030. Além disso, o projeto aponta que até 2050 a empresa deverá remover do meio ambiente todo o carbono emitido por ela desde sua fundação, em 1975.

Brad Smith with Amy Hood and Satya Nadella

As metas foram apresentadas pelo CEO da empresa, Satya Nadella, o presidente Brad Smith, a CFO Amy Hood, e o diretor ambiental Lucas Joppa.

Em publicação no blog oficial, Smith detalhou o plano da Microsoft e a preocupação com o meio ambiente. “Se não reduzirmos as emissões e as temperaturas continuarem subindo, a ciência nos diz que os resultados serão catastróficos”, disse o executivo.

Continue Lendo “Microsoft informa que vai retirar do meio ambiente todo seu carbono emitido”

De analista de sistemas a desenvolvedor web e engenheiros, todos os profissionais de TI devem procurar aprimorar as suas habilidades

Segundos Bob Violino para o Portal – CIO.com, estes são os profissionais de TI que precisam melhorar suas competências.


As iniciativas digitais não estão apenas transformando os negócios – elas também estão aumentando significativamente as competências necessárias por parte dos profissionais de TI.

Não deve ser surpresa, dado o intenso ritmo das mudanças tecnológicas, que algumas funções de TI estejam passando por uma espécie de metamorfose, para que possam se adaptar às transformações do mercado.

Nos últimos anos, fatores como o crescimento da cloud computing e a ascensão da mobilidade corporativa e da edge computing ampliaram o escopo da TI, dando novos significados a diversas carreiras em tecnologia.

Confira algumas das principais funções que os líderes de TI devem considerar, bem como sugestões de habilidades e treinamentos para gerar uma nova versão de carreira e ter maior probabilidade de sucesso na era digital.

Continue Lendo “De analista de sistemas a desenvolvedor web e engenheiros, todos os profissionais de TI devem procurar aprimorar as suas habilidades”

Metodologia de desenvolvimento low-code terá mais adesão a partir de 2020

Segundo Jennifer Gill Portal ITForum365, esta nova tendência de desenvolvimento conquistará até os desenvolvedores da old-school.


Desenvolver software de maneira visual e mais rápida; permitir que profissionais de negócios participem do desenvolvimento, melhorar o time-to-market são alguns dos benefícios mais comentados quando se pensa em desenvolvimento low-code. No entanto, os beneficios vão muito além.

Image result for imagens low-code

As plataformas de código baixo (low-code) ajudarão a minimizar os impactos causados por escassez de desenvolvedores e cientistas de dados, à medida que as empresas poderão contar com mais profissionais durante o desenvolvimento de software. Tudo isso respeitando os limites e padrões estabelecidos pela governança, para evitar falhas e riscos as organizações. A tendência é que essas plataformas conquistem até os desenvolvedores mais experientes.

Continue Lendo “Metodologia de desenvolvimento low-code terá mais adesão a partir de 2020”

Cibersegurança aplicada a banco de dados e seus desafios

Segundo Fernando A. S. F. Junior, colunista do Portal ITForum365, o aumento da conectividade da internet e da economia digital, alimenta um crescimento exponencial de dados acumulados por organizações.


Image result for imagens bancos de dados
Com o aumento da conectividade da internet e da economia digital, alimenta-se um crescimento exponencial de dados acumulados por organizações. Segundo a Forbes, em 2015, o volume de dados criado nos dois anos anteriores foi maior que a quantidade produzida por em toda história da humanidade.

Esse crescimento, aumentou muito o interesse dos cibercriminosos por promoverem invasões – e o fato de haver grande quantidade de informações em um só lugar favorece isso – e também o números de ferramentas e recursos de proteção contra ataques. Como os dados se tornaram protagonistas nas empresas, o vazamento de informações estratégicas pode resultar em processos milionários e até mesmo na quebra do negócio.

Continue Lendo “Cibersegurança aplicada a banco de dados e seus desafios”

As principais tendências de cibersegurança para 2020 na visão da Microsoft

A Microsoft divulgou quais são as principais tendências que acredita que demandarão muita atenção das organizações durante o ano de 2020.


Image result for imagens microsoft

 

“A segurança cibernética é a questão central do nosso tempo – e, na Microsoft, acreditamos ter a responsabilidade de proteger nossos clientes. É uma obrigação que adotamos”, disse Glaucia Faria Young, diretora de Engenharia e Parceiros de Software da Microsoft.

Ao redor do mundo, são gastos US$ 1 trilhão anualmente para combater o cibercrime – três vezes mais do que se gasta para reparar os estragos feitos por desastres naturais. A Microsoft, por sua vez, investe cerca de US$ 1 bilhão anualmente para combater o cibercrime e analisa mais de 8,2 trilhões de sinais todos os dias para proteger emails, identidades, aplicativos, infraestruturas, entre outros focos de ataques.

Continue Lendo “As principais tendências de cibersegurança para 2020 na visão da Microsoft”

Cursos gratuitos online sobre TI e programação são oferecidos pela Microsoft

A Microsoft possui uma das maiores plataformas de cursos online entre as empresas de tecnologia.


Image result for Microsoft Pode parecer brincadeira, mas a Microsoft conta com um  a verdadeira escola online com diversas aulas voltadas para programação, desenvolvimento, banco de dados e outros temas que cercam esse universo da tecnologia da informação.

Com dois grandes atrativos: todos os cursos são gratuitos, podem ser finalizados onde e quando você quiser, e trazem ainda certificação garantida a partir de uma determinada quantidade de horas.

A seguir, você encontra alguns dos principais cursos oferecidos gratuitamente com foco em programação. Para acessá-los, basta clicar no título de cada módulo.


1. Adicionar lógica de decisão a seu código usando a instrução if-else em C#

Aprenda a ramificar o caminho de execução de seu código avaliando expressões boolianas. Neste módulo, você vai escrever código que avalia condições usando as instruções if-elseif-else; criar expressões boolianas para avaliar uma condição; combinar expressões boolianas usando operadores lógicos; aninhar blocos de código dentro de outros blocos de código.

2. Introdução ao Python

Aprenda a escrever código básico do Python, declarar variáveis e trabalhar com entrada e saída do console. Neste módulo, você vai explorar as opções disponíveis para executar aplicativos do Python; usar o interpretador do Python para executar instruções e scripts; aprender a declarar variáveis; criar um aplicativo simples do Python que use entrada e produza saída.

3. Chamar métodos da Biblioteca de Classes do .NET usando C#

Use a funcionalidade na Biblioteca de Classes do .NET chamando métodos que retornam valores, aceitam parâmetros de entrada e mais.

Neste módulo, você vai escrever código que chama métodos sem estado na Biblioteca de Classes do .NET; criar uma instância de classes da Biblioteca de Classes do .NET para chamar métodos que mantêm o estado; use o IntelliSense para saber mais sobre um método, suas versões sobrecarregadas, seu tipo de dados de valor retornado e seus tipos de dados de parâmetro de entrada; use docs.microsoft.com para pesquisar o que um método faz, suas versões sobrecarregadas, seu tipo de valor retornado, seus parâmetros de entrada e o que cada parâmetro representa e muito mais.

4. Criar uma API Web com o ASP.NET Core

Crie um serviço RESTful com o ASP.NET Core que dá suporte a operações de CRUD (criação, leitura, atualização e exclusão). Neste módulo, você vai criar um projeto de API Web com o ASP.NET Core; criar um banco de dados em memória para manter produtos; adicionar suporte para operações CRUD; testar métodos de ação de API Web no shell de comando.

Continue Lendo “Cursos gratuitos online sobre TI e programação são oferecidos pela Microsoft”