Stelf Postado Setembro 19, 2009 Denunciar Share Postado Setembro 19, 2009 PostgresSQL 8.4 SO: WindowsServer 2003Tenho consultas que até versão 8.2 funcionavam perfeitamente, ocorre que atualizei para o 8.4 e não esta mais gerando resultado esperado.trata-se do Like em uma select, observei que isso ocorre quando o campo é um number.segue o comando que até a 8.2 funciona ok, e no oracle também funciona ok. a partir da versão 8.3 em diante não funciona.Sempre retornou ok, incluir to to_char prejudicaria a consulta já que nem sempre saberei o tamanho real do campo.Se alguém tiver passado por esse caso e pouder enviar uma dica para funcionar nesse formatoobrigadoPaulo"A"."ACL_CdCurLet" é um number (18,0)DB-LIKE é um char (30)até a versão 8.2 ou no oracle funciona perfeitamente, nas 8.3 e 8.4 não gera a consulta. EXEC SQL DECLARE CSR-CURLET CURSOR FOR SELECT "A"."EMP_CdEmpresa" ,"A"."ACL_CdCurLet" ,"A"."ALE_CdLetivo" ,"A"."ACU_CdCurso" ,"A"."ACL_NrAulasDia" ,"A"."ACL_DuracaoAula" ,"A"."ACL_Nome" ,"B"."EMP_CdEmpresa" ,"B"."ALE_CdLetivo" ,"B"."ALE_Ano" ,"B"."ALE_Periodo" ,"B"."ALE_NmLetivo" ,"B"."ALE_DataInicio" ,"B"."ALE_DataFinal" ,"C"."ACU_CdCurso" ,"C"."ACU_NmCurso" ,"C"."ACU_AbrCurso" ,"C"."AEN_CdEnsino" ,"D"."AEN_CdEnsino" ,"D"."AEN_NmEnsino" ,"D"."AEN_AbrEnsino" FROM "aMatCurr" "A" ,"aLETIVO" "B" ,"aCURSO" "C" ,"aENSINO" "D" WHERE ( "A"."EMP_CdEmpresa" = "B"."EMP_CdEmpresa" ) AND ( "A"."ALE_CdLetivo" = "B"."ALE_CdLetivo" ) AND ( "A"."ACU_CdCurso" = "C"."ACU_CdCurso" ) AND ( "C"."AEN_CdEnsino" = "D"."AEN_CdEnsino" ) AND ( "B"."EMP_CdEmpresa" = :aLETIVO-EMP-CdEmpresa ) AND ( ("A"."ACL_CdCurLet" LIKE btrim(:DB-LIKE)) <----- esse likenão funciona mais na 8.4 OR ( UPPER(btrim("B"."ALE_Ano")) <----- esse like agora não funciona mais LIKE UPPER(btrim(:DB-LIKE)) ) ) ORDER BY "B"."ALE_Ano" ,"C"."ACU_NmCurso" ,"A"."ACL_Nome" LIMIT :w-Limit END-EXEC Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Stelf
PostgresSQL 8.4 SO: WindowsServer 2003
Tenho consultas que até versão 8.2 funcionavam perfeitamente, ocorre que atualizei para o 8.4 e não esta mais gerando resultado esperado.
trata-se do Like em uma select, observei que isso ocorre quando o campo é um number.
segue o comando que até a 8.2 funciona ok, e no oracle também funciona ok. a partir da versão 8.3 em diante não funciona.
Sempre retornou ok, incluir to to_char prejudicaria a consulta já que nem sempre saberei o tamanho real do campo.
Se alguém tiver passado por esse caso e pouder enviar uma dica para funcionar nesse formato
obrigado
Paulo
"A"."ACL_CdCurLet" é um number (18,0)
DB-LIKE é um char (30)
até a versão 8.2 ou no oracle funciona perfeitamente, nas 8.3 e 8.4 não gera a consulta.
EXEC SQL
DECLARE CSR-CURLET CURSOR FOR SELECT
"A"."EMP_CdEmpresa"
,"A"."ACL_CdCurLet"
,"A"."ALE_CdLetivo"
,"A"."ACU_CdCurso"
,"A"."ACL_NrAulasDia"
,"A"."ACL_DuracaoAula"
,"A"."ACL_Nome"
,"B"."EMP_CdEmpresa"
,"B"."ALE_CdLetivo"
,"B"."ALE_Ano"
,"B"."ALE_Periodo"
,"B"."ALE_NmLetivo"
,"B"."ALE_DataInicio"
,"B"."ALE_DataFinal"
,"C"."ACU_CdCurso"
,"C"."ACU_NmCurso"
,"C"."ACU_AbrCurso"
,"C"."AEN_CdEnsino"
,"D"."AEN_CdEnsino"
,"D"."AEN_NmEnsino"
,"D"."AEN_AbrEnsino"
FROM "aMatCurr" "A"
,"aLETIVO" "B"
,"aCURSO" "C"
,"aENSINO" "D"
WHERE ( "A"."EMP_CdEmpresa" = "B"."EMP_CdEmpresa" )
AND ( "A"."ALE_CdLetivo" = "B"."ALE_CdLetivo" )
AND ( "A"."ACU_CdCurso" = "C"."ACU_CdCurso" )
AND ( "C"."AEN_CdEnsino" = "D"."AEN_CdEnsino" )
AND ( "B"."EMP_CdEmpresa" = :aLETIVO-EMP-CdEmpresa )
AND (
("A"."ACL_CdCurLet" LIKE btrim(:DB-LIKE)) <----- esse likenão funciona mais na 8.4
OR
(
UPPER(btrim("B"."ALE_Ano")) <----- esse like agora não funciona mais
LIKE
UPPER(btrim(:DB-LIKE))
)
)
ORDER BY "B"."ALE_Ano"
,"C"."ACU_NmCurso"
,"A"."ACL_Nome"
LIMIT :w-Limit
END-EXEC
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.