Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FILIPPE MAYMONE

Procedure SQL

Recommended Posts

Olá galera bom dia,

 

Estou tentando criar uma procedure para incluir os registros em uma tabela esses registros resultado de uma consulta em outra tabela.

Criei a procedure e esta certinho, poderem essa query de resultados pode me gerar mais do que um registro. Então tenho a necessidade de criar um While ... mais não estou conseguindo ... preciso fazer com cursor ??? alguém tem algum exemplo ?

Segue minha procedure funcionando para apenas 1 registro:

 

USE BaseXXX-- XXX = Empresa

GO

 

 

if exists (select * from sysobjects where id = object_id(N'[dbo].[incluiAptoEstoque]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[incluiAptoEstoque]

GO

 

CREATE PROCEDURE dbo.incluiAptoEstoque

@NumDocto VARCHAR(16),

@Result BIT

AS

SET NOCOUNT ON

BEGIN

DECLARE @IdMov INTEGER,

@CodLocal BIGINT,

@Lote INTEGER,

@DtMov DateTime,

@DtDocto DateTime,

@CodResp INTEGER,

@NomeResp VARCHAR(40),

@CodTipoProd SMALLINT,

@DscTipoProd VARCHAR(40),

@DscProduto VARCHAR(40),

@CodigoDeBarras VARCHAR(13),

@CodProduto VARCHAR(14),

@CodMarca VARCHAR(02),

@CodTamanho VARCHAR(06),

@QtdeMov DECIMAL(16,4),

@Usuario VARCHAR(30)

 

 

SELECT

@IdMov = EstoqueMov.IdMov,

@CodLocal = EstoqueMov.CodLocal,

@Lote = EstoqueMov.Lote,

@Dtmov = EstoqueMov.Dtmov,

@NumDocto = NumDocto,

@DtDocto = DtDocto,

@CodResp = CodResp,

@NomeResp = NomeResp,

@CodTipoProd = EstoqueMovItens.CodTipoProd,

@DscTipoProd = dscTipoProd,

@CodigoDeBarras = EstoqueMovItens.CodigoDeBarras,

@Codproduto = EstoqueMovItens.CodProduto,

@DscProduto = DscProduto,

@CodMarca = EstoqueMovItens.CodMarca,

@Codtamanho = EstoqueMovItens.CodTamanho,

@QtdeMov = QtdeMov

FROM EstoqueMov

INNER JOIN EstoqueMovITens

ON EstoqueMov.IdMov = EstoquemovItens.IDMov

INNER JOIN Produtos ON EstoqueMovItens.CodTipoProd = Produtos.CodTipoProd

AND EstoqueMovItens.CodMarca = Produtos.CodMarca

AND EstoqueMovItens.CodProduto = Produtos.CodProduto

INNER JOIN TiposDeProdutos ON EstoqueMovItens.CodTipoProd = TiposDeprodutos.CodTipoProd

Where NumDocto = @NumDocto

--Necessidade o While para percorrer todos os registro...

 

INSERT INTO dbo.ApontEstoque (DtApont,IdMov,CodLocal,Lote,DtMov,NumDocto,DtDocto,CodResp,NomeResp,

CodTipoProd,CodigoDeBarras,CodProduto,CodMarca,CodTamanho,QtdeMov, Usuario)

VALUES (GETDATE(), @IdMov,@CodLocal,@Lote,@DtMov,@NumDocto,@DtDocto,@CodResp,@NomeResp,

@CodTipoProd,@CodigoDeBarras,@CodProduto,@CodMarca,@CodTamanho,@QtdeMov,SUSER_SN

AME())

 

 

SELECT @Result = 0

 

GOTO FIM

 

ERRO:

SELECT @Result = 1

FIM:

RETURN @Result

END

GO

 

 

 

Muito Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não pode usar o select com o insert desta forma?

 

insert into tabela1 (campo1, campo2)
select campoA, campoB from tabela2
where campoA > 10

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.