ERRO (MULTIPLE ROWS IN SINGLETON SELECT)

Firebird

15/08/2009

ERRO (MULTIPLE ROWS IN SINGLETON SELECT)

UTILIZO O BANCO DE DADOS FIREBIRD

ESTOU FAZENDO UMA ATUALIZACAO NO CAMPO DESCRICAO DO PRODUTO NA TABLEA PEDITENS

ESTA DANDO O ERRO ACIMA

PERGUNTA O QUE É O ERRO ACIMA ??

COMO RESOLVER O PROBLEMA

COMANDOS DA PROCEDURE

--------------------------------------------------------------------------------


FOR
SELECT
PROD_CODIGO ,
PROD_DESCRICAOPRODUTO
FROM PRODUTO

INTO :vcodigo,
:VDESCRICAOPRODUTO
DO
BEGIN
UPDATE PEDITENS SET PROD_DESCRICAOPRODUTO :VDESCRICAOPRODUTO
WHERE PROD_CODIGO = :vcodigo;
UPDATE notaitens SET PROD_DESCRICAOPRODUTO= :VDESCRICAOPRODUTO
WHERE PROD_CODIGO = :vcodigo;
END

--------------------------------------------------------------------------------


Grato

Plácido


Placido

Placido

Curtidas 0

Respostas

Webjoel

Webjoel

15/08/2009

Olá!

Primeiro de tudo, da próxima vez que você colocar um código na postagem coloque-os entre as tags ´code´, existe um botão pra isso ao redigir a postagem.

Vamos ao seu problema. O erro está informando que em um select que deveria retornar apenas uma linha de registros está retornando mais de uma.

Pelo que vi no código o select da procedure está certo, pois você está usando o comando ´for´, então neste caso o select com problema deve estar em alguma trigger destas tabelas que você está atualizando na procedure, cheque isso e depois nos informe.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

15/08/2009

se o código foi transcrito exatamente como está no banco de dados, faltou o sinal ´=´ ao setar o valor no primeiro update.
FOR
 SELECT
   PROD_CODIGO ,
   PROD_DESCRICAOPRODUTO
 FROM PRODUTO
 INTO :vcodigo, :VDESCRICAOPRODUTO
DO
BEGIN
  UPDATE PEDITENS SET PROD_DESCRICAOPRODUTO = :VDESCRICAOPRODUTO -- faltava o ´=´ aqui
  WHERE PROD_CODIGO = :vcodigo;

  UPDATE notaitens SET PROD_DESCRICAOPRODUTO = :VDESCRICAOPRODUTO
  WHERE PROD_CODIGO = :vcodigo;
END



GOSTEI 0
Placido

Placido

15/08/2009

Bom dia

Meu amigo Joel muito obrigado pela dica

desbilitei a trigguer que faz uma atualizacao

rodei a procedure e tudo funcionou perfeito.

Muito obrigado

Um abraço


Plácido


GOSTEI 0
POSTAR