Olá pessoal, meu nome é Mauricio Junior e estou com vocês há algum tempo desenvolvendo artigos e vídeos. Espero que possa ajudar a todos porque esse é o meu objetivo. Divulgar mais e mais essa grande tecnologia que é .NET, principalmente com essa nova IDE desenvolvida pela Microsoft.

 

Para pegar essa ferramenta grátis, basta acessar o endereço abaixo:

http://msdn.microsoft.com/vstudio/express/

 

Hoje desenvolverei um artigo para SQL SERVER cujo poderei ajudar muito em desenvolver uma funcionalidade dentro de uma STORED PROCEDURE.

O princípio desse artigo é o seguinte: Tenho duas tabelas no banco de dados cujo preciso pegar os valores de acordo com condição e inseri-los dentro da segunda tabela do banco com os valores selecionados mais os outros que foram passados.

 

Tabela 1

Descrição dos campos

 

 

 

Tabela 2

Descrição dos campos

 

 

 

 

Na primeira tabela, possuo alguns dados cujo preenchi na mão mesmo. É bem simples o artigo e útil. Segue os dados preenchidos abaixo:

 

 

 

 

Nesse próximo passo, montarei uma stored procedure para buscar os dados e inserir na mesma hora na tabela 2. Para provar que ainda não existe dados na tabela 2, segue a ilustração.

 

 

 

 

Cliquei com o botão direito em cima de STORED PROCEDURES e escolhi a opção New Stored Procedure.. Com isso a IDE SQL Entreprise Manager mostra uma outra tela para ser preenchida. Gosto de lembrar que o mesmo pode ser feito por comandos SQL normalmente ou STORED PROCEDURE. Este artigo é mais um conceito para melhorar a forma de pegar os dados e inseri-los tão rapidamente que todos irão ficar espantados.

 

Antes de começar a desenvolver recomendo algumas dicas em relação a SP:

- Não coloque uma stored procedure iniciando com o nome SP, porque o banco de dados faz uma varredura em todas as SPs dentro do sistema. Com isso fica lento na hora de ler, mas essa lentidão para poucas SPs não pode ser visto a olho nu;

- Sempre comentar as SPs dizendo o nome do criador, de quem alterou, data e o que a mesma faz, documentar é uma boa prática;

- Evite chamar SPs dentro de SPs, faça funções que funcionará melhor.

 

Segue o código do INSERT SELECT:

 

 

CREATE PROCEDURE PROC_SELECTINSERT

 

            @CH_TB1                 AS INT,

            @DESCRICAO         AS NVARCHAR(50)

 

AS

 

 

            INSERT INTO

                        TB2

                        (CH_TB1, VALOR_TB2, NOME_TB2, DT_TB2, DESCRICAO_TB2)

                        (SELECT

                                   CH_TB1,VALOR_TB1, NOME_TB1, DT_TB1,  @DESCRICAO

                        FROM

                                   TB1

                        WHERE

                                    CH_TB1 = @CH_TB1)

 

GO

 

Explicação:

 

Note que o os parâmetros de entrada são do tipo INT e NVARCHAR. É uma chave e uma descrição para inserir na tabela TB2. O insert vem primeiro com os campos, o select vem logo após os campos, porém seguindo a ordem dos mesmos campos do insert.

Essa ordem é apenas de tipo e de valores que irão ser inseridos no banco de dados, por exemplo:

Chave com Chave, Data com Data, Descrição com Descrição.

O campos @Descricao significa que o mesmo será passado pelo sistema. Dentro da condição WHERE é passada pelo sistema @CH_TB1 para dentro da STORED PROCEDURE.

 

Depois de criada, executei a mesma dentro do SQL QUERY ANALYZER.

 

 

 

 

O mesmo foi inserido automaticamente com os valores passados corretamente.

 

Segue o select das duas tabelas e compare os dados:

 

 

 

Espero ter ajudado em mais um artigo.

Abraços.

 

 

 

 

Mauricio Junior

Community: www.aspneti.com