Agradeço o retorno Bruno, mas continuo indignado, inconformado de que o Oracle 10.2 me transforme o retorno MAX(<STRING_CHAR>) em NUMBER apenas por que todos os caracteres são números, enquanto no 9i isto não ocorria. Desta maneira o Oracle cai um pouco no meu conceito. Peço a ajuda dos outros colegas do fórum se conhecem alguma coisa a respeito e que possam me ajudar. A única coisa que achei no Google foi um tópico no site Orafaq.com no tópico http://www.orafaq.com/forum/m/266808/112285/#msg_266808 Mas que acabou ficando sem resposta também. Talvez alguém mais tenha passado por esta situação e saiba uma dica de como resolver isto SEM TER QUE MEXER EM TODAS AS PROCEDURES!!!, pois a aplicação é de terceiros. As que eu crio aqui eu já corrige faz tempo. At. Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda * - Fone: (0XX54) 3242-3615 * - Fax: (0XX54) 3242-3648 * - E-mail: <BLOCKED::mailto:[EMAIL PROTECTED]> [EMAIL PROTECTED] * - WWW: www.autopratense.com.br <BLOCKED::http://www.autopratense.com.br/> _____
De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Bruno Lorenzini Enviada em: terça-feira, 11 de setembro de 2007 12:00 Para: oracle_br@yahoogrupos.com.br Assunto: RES: [oracle_br] SELECT MAX() Convertendo CHAR em NUMBER Desconheço algum parâmetro pra isso, talvez até exista mas eu sou jr. em adm de banco. Não sei se você tem muitos programas que trabalham dessa forma, mas aconselharia você a muda-los para a forma que passei, afinal de contas, pela lógica, apesar de funcionar para campos char, o MAX é uma função numérica e teoricamente seu retorno deveria ser esse mesmo se possível. Se ficar sabendo de algo aviso. Abs, _____ De: [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br [mailto:[EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br] Em nome de Marcelo Enviada em: terça-feira, 11 de setembro de 2007 10:47 Para: [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br Assunto: RES: [oracle_br] SELECT MAX() Convertendo CHAR em NUMBER Bruno, Não sei se você leu atentamente meu e-mail. No 9i está consulta SELECT MAX(<STRING_CHAR(8)>) INTO cDataMax(CHAR(8)) Funcionava corretamente sem nenhum problema. O que estou tentando evitar é justamente manipular todas as procedures da aplicação Microsiga fazendo esta correção manualmente, pois eu já fiz testes em que se eu uso uma função de String tal como TRIM(MAX(<STRING_CHAR>)) ou TO_CHAR(MAX(<STRING_CHAR>)) o valor retornado é uma string de 8 caracteres. Porém fico indagado por que no 10g é feita uma conversão para NUMBER de um Campo CHAR(8), só porque todos os caracteres são números? Entendeu meu colega?? Atenciosamente, Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda * - Fone: (0XX54) 3242-3615 * - Fax: (0XX54) 3242-3648 * - E-mail: <BLOCKED::mailto:[EMAIL PROTECTED] <mailto:marcelo%40autopratense.com.br> e.com.br> [EMAIL PROTECTED] <mailto:marcelo%40autopratense.com.br> e.com.br * - WWW: www.autopratense.com.br <BLOCKED::http://www.autoprat <http://www.autoprat <http://www.autopratense.com.br/> ense.com.br/> ense.com.br/> _____ De: [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br [mailto:[EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br] Em nome de Bruno Lorenzini Enviada em: terça-feira, 11 de setembro de 2007 10:24 Para: [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br Assunto: RES: [oracle_br] SELECT MAX() Convertendo CHAR em NUMBER SELECT TO_CHAR( MAX( TO_DATE( <STRING_CHAR>, YYYYMMDD ) ) ) INTO cDataMax FROM TO_DATE vai fazer transformar o valor em data e vai te trazer a maior data corretamente. Do jeito que estava não estava 100% correto, não sei tem alguma data que poderia retornar algum valor errado, mas é sempre bom nesses casos utilizar o tipo certo pra varíavel certa, ou seja, se está trabalhando com data, use data, se está trabalhando com char, use char, e assim por diante, evitando as tão famosas POGs do dia-a-dia. TO_CHAR vai transformar o resultado do MAX() em CHAR pra que você possa jogar em sua variável novamente. Faça o teste e veja se funciona. Qlquer coisa é só avisar. Abs, _____ De: [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br [mailto:[EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br] Em nome de Marcelo Alberto Lauschner Enviada em: terça-feira, 11 de setembro de 2007 10:04 Para: [EMAIL PROTECTED] <mailto:oracle_br%40yahoogrupos.com.br> os.com.br Assunto: [oracle_br] SELECT MAX() Convertendo CHAR em NUMBER Bom dia, Tenho a seguinte situação: Inúmeras procedures fazem uso do SELECT MAX() em campos CHAR(8), onde está armazenada uma String YYYYMMDD, ou seja data formato serial, para obter a última data de vários eventos numa aplicação Microsiga. No 9i o SELECT MAX(<STRING_CHAR(8)>) INTO cDataMax(CHAR(8)) retornava exatamente CHAR(8). Porém agora com o 10.2.0.1 está ocorrendo que está retornando NUMBER () e assim está me dando vários erros de ORA-06502, ou seja esta tentando atribuir um valor de tipo diferente da váriavel. Gostaria de saber se isto é algum Bug, ou existe algum parametro que defina que se ele encontrar todos os caracteres como números, transforma o valor da consulta em NUMBER,invés de CHAR como é o formato do campo? No aguardo de qualquer opinião, Marcelo Alberto Lauschner Tecnologia e Sistemas Auto Pratense Ltda  - Fone: (0XX54) 3242-3615  - Fax: (0XX54) 3242-3648  - E-mail: [EMAIL PROTECTED] <mailto:marcelo%40autopratense.com.br> e.com.br  - WWW: www.autopratense.com.br [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]