Procedure - ERRO

08/04/2014

0

Bom Dia Pessoal,

Estou tentando executar a seguinte proc.

CREATE PROCEDURE SP_AlteraStatusPedidoAtivo
AS 
BEGIN

DECLARE @cliche VARCHAR(10), @statuscliche CHAR(1), @statuspedido INT;
	
	DECLARE Cur_StatusCliche CURSOR FOR
	SELECT SOPASTA_StatusCliche.Cliche, SOPASTA_StatusCliche.Status,
		Pedidos.StatusPedido FROM SOPASTA_StatusCliche 
		LEFT JOIN itens ON SOPASTA_StatusCliche.Cliche = itens.CodFI
		INNER JOIN Pedidos ON itens.CodFI = Pedidos.CodFI
		WHERE SOPASTA_StatusCliche.STATUS = 'I' AND Pedidos.StatusPedido <> 4
		ORDER BY Pedidos.Pedido

	  
	OPEN Cur_StatusCliche;
		FETCH NEXT FROM Cur_StatusCliche INTO @cliche, @statuscliche, @statuspedido
		WHILE @@FETCH_STATUS = 0
			BEGIN
				
				SELECT SOPASTA_StatusCliche.Cliche, SOPASTA_StatusCliche.Status,
					Pedidos.StatusPedido FROM SOPASTA_StatusCliche 
					LEFT JOIN itens ON SOPASTA_StatusCliche.Cliche = itens.CodFI
					INNER JOIN Pedidos ON itens.CodFI = Pedidos.CodFI
				WHERE @cliche = SOPASTA_StatusCliche.Cliche AND @statuscliche = SOPASTA_StatusCliche.Status AND
				@statuspedido = Pedidos.StatusPedido; 

				IF ((@statuscliche = 'I') AND (@statuspedido <> 4))
				BEGIN
				UPDATE Pedidos SET Pedidos.StatusPedido = 4 WHERE Pedidos.StatusPedido = @statuspedido AND SOPASTA_StatusCliche.Status = @statuscliche; 
				END;

				--UPDATE OFS SET RazaoSuspOF = 'Bloqueio: CQ' WHERE Pedido = @pedido AND Item = @item;

				 FETCH NEXT FROM Cur_StatusCliche INTO  @cliche, @statuscliche, @statuspedido;
			END;
	CLOSE Cur_StatusCliche;

END


e está me gerando o seguinte erro:

Msg 4104, Level 16, State 1, Procedure SP_AlteraStatusPedidoAtivo, Line 30
O identificador de várias partes "SOPASTA_StatusCliche.Status" não pôde ser associado.

Não consegui entender o motivo de estar dando erro de identificador. O que pode estar errado?

Muito Obrigado.
Marcio Morando

Marcio Morando

Responder

Posts

08/04/2014

Fabiano Carvalho

Cursor dentro de cursor? Vai com calma rs!
O erro que encontrei está nessa linha

UPDATE Pedidos SET Pedidos.StatusPedido = 4 WHERE Pedidos.StatusPedido = @statuspedido AND SOPASTA_StatusCliche.Status = @statuscliche;


Não existe o alias SOPASTA_StatusCliche
Responder

08/04/2014

Marcio Morando

Fabiano, não entendi, como assim não existe o alias?
Responder

08/04/2014

Fabiano Carvalho

É porque você está usando um apelido que não existe, por isso está ocorrendo o erro.
Responder

08/04/2014

Fabiano Carvalho

É porque você está usando um apelido que não existe, por isso está ocorrendo o erro.
Responder

08/04/2014

Marcio Morando

Estou usando TABELA.CAMPO .

Teria que ser feito de outra forma?

SOPASTA_StatusCliche é uma tabela.
Responder

08/04/2014

Fabiano Carvalho

Tente assim

UPDATE A SET Pedidos.StatusPedido = 4
FROM Pedidos as a,SOPASTA_StatusCliche as b
where a.StatusPedido  = @statuspedido
AND b.Status = @statuscliche;

Responder

08/04/2014

Marcio Morando

Deu o mesmo erro, mas agora apontando o campo Pedidos.StatusPedido.
Responder

09/04/2014

Fabiano Carvalho

Coloca a.statusPedido
Responder

09/04/2014

Marcio Morando

Está fazendo o Update, mas está fazendo em todos os registros, parece que não está lendo a condição do IF. Mas muito Obrigado pelo apoio Fabiano!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar