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.

Fabiano Carvalho
   - 08 abr 2014

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

#CódigoUPDATE 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?

Fabiano Carvalho
   - 08 abr 2014

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

Fabiano Carvalho
   - 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.

Fabiano Carvalho
   - 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.

Fabiano Carvalho
   - 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!