Página anterior | Voltar ao início do trabalho | Página seguinte |
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 - mauricio[arroba]ascompras.com
Página anterior | Voltar ao início do trabalho | Página seguinte |
|
|