Procedure - ERRO
Bom Dia Pessoal,
Estou tentando executar a seguinte proc.
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.
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
Curtidas 0
Respostas
Fabiano Carvalho
08/04/2014
Cursor dentro de cursor? Vai com calma rs!
O erro que encontrei está nessa linha
Não existe o alias SOPASTA_StatusCliche
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
GOSTEI 0
Marcio Morando
08/04/2014
Fabiano, não entendi, como assim não existe o alias?
GOSTEI 0
Fabiano Carvalho
08/04/2014
É porque você está usando um apelido que não existe, por isso está ocorrendo o erro.
GOSTEI 0
Fabiano Carvalho
08/04/2014
É porque você está usando um apelido que não existe, por isso está ocorrendo o erro.
GOSTEI 0
Marcio Morando
08/04/2014
Estou usando TABELA.CAMPO .
Teria que ser feito de outra forma?
SOPASTA_StatusCliche é uma tabela.
Teria que ser feito de outra forma?
SOPASTA_StatusCliche é uma tabela.
GOSTEI 0
Fabiano Carvalho
08/04/2014
Tente assim
UPDATE A SET Pedidos.StatusPedido = 4 FROM Pedidos as a,SOPASTA_StatusCliche as b where a.StatusPedido = @statuspedido AND b.Status = @statuscliche;
GOSTEI 0
Marcio Morando
08/04/2014
Deu o mesmo erro, mas agora apontando o campo Pedidos.StatusPedido.
GOSTEI 0
Fabiano Carvalho
08/04/2014
Coloca a.statusPedido
GOSTEI 0
Marcio Morando
08/04/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!
GOSTEI 0