Array
(
)

Procedure - ERRO

Marcio Morando
   - 08 abr 2014

Bom Dia Pessoal,
Estou tentando executar a seguinte proc.
#Código

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.

Faabiianooc
   - 08 abr 2014

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

#Código

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


Não existe o alias SOPASTA_StatusCliche

Marcio Morando
   - 08 abr 2014

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

Faabiianooc
   - 08 abr 2014

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

Faabiianooc
   - 08 abr 2014

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

Marcio Morando
   - 08 abr 2014

Estou usando TABELA.CAMPO .

Teria que ser feito de outra forma?

SOPASTA_StatusCliche é uma tabela.

Faabiianooc
   - 08 abr 2014

Tente assim

#Código

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

Marcio Morando
   - 08 abr 2014

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

Faabiianooc
   - 09 abr 2014

Coloca a.statusPedido

Marcio Morando
   - 09 abr 2014

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!