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 POG’s 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 
&#61480; - Fone: (0XX54) 3242-3615
&#61480; - Fax: (0XX54) 3242-3648
&#61482; - E-mail: [EMAIL PROTECTED]
<mailto:marcelo%40autopratense.com.br> e.com.br
&#61694; - 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]

Responder a