Short Scripts – Setembro 2022

Olá pessoal, boa tarde…

Um lindo domingo com muito sol, temperatura agradavél e uma leve brisa, aqui em São Roque interior de São Paulo.

Seja bem-vindo, em mais um post da sessão Short Scripts, o segundo post desta sessão em 2022 e o de número 46 em seu total.

Estamos na última semana do inverno neste ano de 2022, sou suspeito a dizer, adoro estas temperaturas mais baixas, este vento bem gelado, gosto muito do inverno.

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 hoje, feita no encerramento do post anterior publicado no mês de março de 2022, 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, vou exatamente compartilhar um conjunto diversificado de scripts que foram catalogados nos últimos meses, que podem ser implementados em diferentes ambientes banco de dados no Microsoft SQL Server.

Em conjunto com o uso de forma de execução da cláusula Values, os exemplos de código aqui compartilhados se relacionam com os seguintes assuntos:

● Cláusula Where;
● Comando Begin;
● Comando Break;
● Comando Create Function;
● Comando Create Index;
● Comando Create Table;
● Comando Create Trigger;
● Comando Declare;
● Comando Else;
● Comando End;
● Comando Insert;
● Comando Order By;
● Comando Return;
● Comando Select;
● Comando Update;
● Comando While;
● Diretiva Set;
● DMF sys.dm_exec_query_plan();
● DMF sys.dm_exec_sql_text();
● DMV sys.dm_exec_query_stats;
● Função Count();
● Função Count_BIG();
● Função Identity();
● Função PatIndex();
● Função Replace();
● Opções SchemaBinding;
● Operador de Função Cross Apply;
● Operador Like;
● Operador Lógico condicional IF;
● Tabela Inserted;
● Tipo de Dados Char();
● Tipo de Dados Int;
● Tipo de Dados Varchar();
● Variáveis;
● Visão sys.objects; e
● Visão sys.sql_modulese.

Chegou a hora, mãos nos teclados, a seguir apresento os códigos e exemplos selecionados para o Short Script – Setembro 2022.

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, tenha todo cuidado possível para evitar maiores problemas.

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


Short Scripts

— Short Script 1 – Utilizando a função Count_BIG na criação de índices em uma view —
-- Criando a Tabela --
Create Table MySampleTable
(Id1 Int,
Id2 Int,
SomeData Varchar(100))
Go

-- Criando a View para realizarr a contagem de dados --
Create View SampleView With SchemaBinding
As
Select COUNT_BIG(*) TableCount, Id2
From dbo.MySampleTable
Group By Id2
Go

-- Criando o Índice --
Create Unique Clustered Index [IX_ViewSample] On [dbo].[SampleView] (Id2 Asc)
Go
— Short Script 2 – Como encontrar uma determino objeto programado em um Banco de Dados —
Select type_desc, 
          obj.name As Name, 
           sqlmod.definition As Definition
From sys.sql_modules AS sqlmod Inner Join sys.objects AS obj 
                                                        On sqlmod.object_id = obj.object_id
Where sqlmod.definition LIKE '%Nome_Objeto%' -- Objeto a ser procurado --
Order By type_desc
Go
— Short Script 3 – Criando a Trigger para controle de histórico de movimentação de registros lógicos —
-- Criando a Table de Novos Produtos --
Create Table NovosProdutos
(Codigo Int Identity(1,1),
Descricao VarChar(10))

-- Criando a Table de Histórico Novos Produtos --
Create Table HistoricoNovosProdutos
(Codigo Int,
Descricao VarChar(10))
Go

-- Inserindo valores --
Insert Into Novosprodutos Values('Arroz')
Insert Into Novosprodutos Values('Arroz1')
Go

-- Criando a Trigger para controle de histórico --
Create Trigger T_Historico
On NovosProdutos
for update
As 
 If (Select Descricao from Inserted) <> (Select Descricao from Deleted)
  Begin
  Insert Into HistoricoNovosProdutos (Codigo, Descricao)
  Select Codigo, Descricao FROM Inserted
End
Go

-- Fazendo os teste --
Update NovosProdutos
Set Descricao='Arroz 4'
Where Codigo = 1
Go

Update NovosProdutos
Set Descricao='Arroz1'
Where Codigo = 2
Go
— Short Script 4 – Relação de Querys armazenadas no Cache do Plano de Execução —
Select QT.text, QP.query_plan, QS.execution_count,
           QS.total_elapsed_time, QS.last_elapsed_time,
           QS.total_logical_reads
From sys.dm_exec_query_stats as QS Cross Apply sys.dm_exec_sql_text(QS.sql_handle) as QT
Cross Apply sys.dm_exec_query_plan (QS.plan_handle) as QP
Order By QS.execution_count Desc
Go
— Short Script 5 – Criando uma Função de Usuário para substituir números por letras —
-- Criando a Função F_Substituir_NumerosPorLetras --
Create Function F_Substituir_NumerosPorLetras(@Frase VarChar(500))
Returns VarChar(500)
Begin

Declare @Inicio Int

Set @Inicio = PatIndex('%[0-9]%', @Frase)

Whie @Inicio > 0
Begin

Set @Inicio = PatIndex('%[0-9]%', @Frase)

If @Inicio > 0
Set @Frase = Replace(@Frase, SubString(@Frase, @Inicio, 1),'X')
Else
Break
End

Return @Frase
End
Go

-- Executando a Função passando uma frase --
Select dbo.F_Substituir_NumerosPorLetras('Operação 0090 da sequência 2 na ordem 1887109 ainda não foi confirmada')
Go

Muito bem, missão mais que cumprida!

Uma super e especial 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:

Agradecimento

Obrigado mais uma vez por sua visita, fico honrado com sua ilustre presença, 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 próximo post.

Tenha uma ótima semana.

Abraços.