Ir para conteúdo

POWERED BY:

Arquivado

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

Wanderson J.

Stored Procedure

Recommended Posts

Alguem me ajude nessa procedure !!!

Compila certo, mas ao executar ...

Está dando o seguinte erro ::

Cursorfetch: The number of variables declared in the INTO list must match that of selected columns.

 

 

--lancando no fluxo de estoque

USE [fusion]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

alter PROCEDURE [dbo].[sp_incluir_fluxo]

@venda as integer,

@usuario as integer

AS

 

DECLARE CurItens --Nome do cursor

CURSOR FOR

select vd.produto,vd.quantidade,p.estoque,vd.data, vd.codigo as venda, p.codigo FROM produtos p inner join vendasdetalhes vd on p.codigo=vd.produto and vd.codigo = @venda

 

DECLARE @produto INTEGER, @quantidade float, @estoque as float, @data as datetime

BEGIN TRANSACTION

OPEN CurItens

FETCH NEXT FROM CurItens INTO @produto, @quantidade, @estoque, @data

--Iniciando laço

WHILE @@FETCH_STATUS = 0

BEGIN

IF (SELECT estoque - @quantidade FROM Produtos WHERE codigo = @produto) >= 0

insert into fluxo (produto,quantidade,atual,data,usuario) values (@produto,@quantidade,@estoque,@data,@usuario)

ELSE

BEGIN

ROLLBACK TRANSACTION

RAISERROR('Estoque insuficiente!', 15, 1)

CLOSE CurItens

DEALLOCATE CurItens

RETURN

END

 

 

FETCH NEXT FROM CurItens INTO @produto, @quantidade,@estoque, @data

END

CLOSE CurItens

DEALLOCATE CurItens

COMMIT TRANSACTION

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wanderson J.

 

o cursor esta errado.

De uma olhada no exemplo abaixo, tirando do books on line:

DECLARE @CAMPO VARCHAR(100)

DECLARE product_cursor CURSOR FOR 

SELECT CAMPO1 FROM TABELA

OPEN product_cursor
FETCH NEXT FROM product_cursor INTO @product -- AKI TEM QUE TER A MESMA QTDE DE VARIAVEIS DOS CAMPOS


WHILE @@FETCH_STATUS = 0
BEGIN

-- aki vai os comandos que você precisa, update, insert, delete

SELECT @message = '		 ' + @product
PRINT @message

FETCH NEXT FROM product_cursor INTO @product -- IGUAL AO FETCH DE CIMA

END

CLOSE product_cursor
DEALLOCATE product_cursor

Abç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.