Erro: Parametros em Update com CASE

Firebird

01/09/2005

Boa tarde pessoal,

Estou começando a usar agora o comando UPDATE do SQL e estou com o seguinte problema:

update mat_pedido_itens
set DT_REC = :dt_rec, QTD_REC = :qtd_rec, QTD_PED = CASE WHEN((QTD_PEND + QTD_REC ) > QTD_PED) THEN
:old_rec + QTD_PED END

qnd tento usar o cod acima, paraece a seguinte mensagem: Data Type Unknown, tenho que especificar o ´tipo´ desses parametros?Se for por favor me digam onde, pois ja tentei em diversos lugares
Uso o IBX/FB e Delphi 7.
Obrigado


Neves777

Neves777

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

01/09/2005

creio que haja um problema lógico aí:

se (QTD_PEND + QTD_REC ) for maior que QTD_PED, então QTD_PED é igual a soma de :old_rec e QTD_PED.
e caso contrário? qual será o valor de QTD_PED???

deveria ter um ELSE nesse case:

update 
  mat_pedido_itens
set
  DT_REC = :dt_rec,
  QTD_REC = :qtd_rec,
  QTD_PED = CASE 
              WHEN (QTD_PEND + QTD_REC ) > QTD_PED
              THEN :old_rec + QTD_PED
              ELSE QTD_PED
            END



GOSTEI 0
Neves777

Neves777

01/09/2005

O problema é mesmo de sintaxe, pois o codigo nao é nem executado, ja que como eu disse aparece a mensagem de erro: Data type Unknown.
Alguem sabe o por que???


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

01/09/2005

qual a versão do FB que você utiliza?


GOSTEI 0
Neves777

Neves777

01/09/2005

Versao 1.5, mas o banco esta no dialeto 1.0


GOSTEI 0
Gandalf.nho

Gandalf.nho

01/09/2005

Versao 1.5, mas o banco esta no dialeto 1.0


Vc terá que converter seu banco para a versão 1.5, já que o CASE só foi implantado a partir dessa versão.


GOSTEI 0
POSTAR