LODVini 0 Denunciar post Postado Outubro 31, 2006 boa tarde... tenho um select utilizando o comando case... funciona sem problemas no plus... mas eu preciso deste select no forms, e o forms aceita apenas o decode... gostaria de saber se teria como eu trocar o case que eu tenho por decode (como??). Coluna do select q utiliza case: case when vtc.vlr_pago is not null and vtc.data_pagto is not null then '1' when vtc.data_pagto is null and trunc(sysdate) <= vtc.data_vencimento then '3' else '2' end tipo_parcela tentei trocar mas nao consegui fazer a verificacao de "<="... se alguem souber e puder ajudar... grato Vinicius Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Outubro 31, 2006 O Oracle Forms não aceita CASE? É padrão ANSI! Acho que aceita sim. Abraços, http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 31, 2006 O case é mais lento que o decode, podendo ser feito via decode vale mais a pena ?? Compartilhar este post Link para o post Compartilhar em outros sites
LODVini 0 Denunciar post Postado Novembro 1, 2006 no meu forms aqui nao funciona...pelo que conversei com algumas pessoas, me disseram que era por causa que eu nao tinha um patch atualizado do forms...enfim..."se nao souber fazer um cheque de R$60, faça dois de R$30"dividi meu select em 3 e fiz union.. ( cada partde do case um select )...Funcionou...mas vlw Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Novembro 1, 2006 Mas, como ficou a performance do seu SELECT? Ficou satisfatoria. Igual ao Motta disse acima, utilizar o DECODE é melhor que CASE. Segue um exemplo: SELECT empresa, decode(idproduto, 10, 'IBM', 11, 'Microsoft', 12, 'Hewlett Packard', 'Gateway') result FROM tblProdutos; Abraços, http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 1, 2006 Rodrigo, eu não afirmei , mas perguntei .... Desconfio que o Decode seja mais rápido pela caracterisca da sintaxe, mas não tenho certeza. Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Novembro 1, 2006 Para melhorar as idéias segue uma literatura interessante: Improving SQL efficiency using CASE Respostas de experiências com DECODE Opinião: Aqui na empresa existe SELECTS muito pesado em nível de processamento e utilização de memória. Alguns funcionam muito bem com DECODE, passando para CASE houve perca de performance e alteração nos planos de execução. Porém, com DECODE você não pode colocar condições de comparação como (AND,OR,XOR). Fica a gosto do cliente. Abraços, http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 1, 2006 O que tenho feito é o seguinte, sendo simples tipo : DECODE(SEXO,'M','MASCULINO','FEMININO') vai o DECODE. Só uso o case quando é mais complexo. (CASE THEN SEXO='M' AND UF_NASF = 'RJ' THEN 'ESPERTO' THEN SEXO='F' AND UF_NASF = 'RJ' THEN 'ESPERTA' ELSE 'OTARIOS' END) :) No legado , que está funcionando e usa decode , deixo queito .... []´S Compartilhar este post Link para o post Compartilhar em outros sites
LODVini 0 Denunciar post Postado Novembro 1, 2006 alphamek... a performance caiu quando troquei o case por 3 select's....quando sao coisas faceis faço com case ( exemplo sexo) ... com maior complexidade utilizo o case...mas a minha questao e duvida é: nao consegui trocar meu case por decode... Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 3, 2006 Já tentou no site da Oracle para ver pq o CASE não funciona no FORMS ? Compartilhar este post Link para o post Compartilhar em outros sites