Chiappa, muito obrigado pela ajuda e realmete vc está certo é um problema da linguagem, consegui resolver , mas o q meu deixou intrigado é. Se no ORacle 9i ele aceita um to_char de um campo CLOB o que irá acontecer se nesse campo tiver mais de 4mil caracteres será q ira estourar?
bom mas em todo caso muito obrigado pela ajuda t+ Thiago jlchiappa escreveu: >Thiago, eu tinha respondido antes, mas parece que deu algum piripaque >aqui no meu acesso à internet, não sei se chegou até o grupo a >resposta ou não, assim mando de novo, se vc ou alguém mais receber >duplicado, favor ignorar. Segue : > > Ah, ok, agora está claro, o banco está fazendo o CORRETO e >DOCUMENTADO, tratando CLOB e VARCHAR , ** corretíssimamente **, como >datatypes DIFERENTES, a questão aí então NÃO É de banco, mas sim da >SUA linguagem, e do comportamento dela, do suporte ou falta de a algum >datatype Oracle, certo... > Bom, não programo em php, MAS sempre sempre a recomendação é ir aonde >existe pessoal que entenda : em várias outras msgs referentes à php, >tenho direcionado o pessoal à página-mãe da Oracle sobre php em >http://www.oracle.com/technology/tech/php/index.html , onde numa busca >super-rápida achei >http://www.oracle.com/technology/pub/articles/oracle_php_cookbook/fuecks_lobs.html >, que parece tratar sobre o caso em questão. Da mesma forma. google é >seu amigo, e os newsgroups tão aí pra serem pesquisados, também... > >OBS : quanto à uma eventual conversão, não sei se tinha ficado claro, >mas na msg original eu já tinha dito, agra REPITO : na versão 9i o >manual diz que as funções SQL (TO_CHAR inclusive) FAZEM conversão >implícita, enquanto a 8i NÃO, então SE vc vai programar em 8i, e SE >for necessário (por qquer bug/falha/falta de suporte à LOBs por parte >da sua linguagem) converter LOBs pra CHARs, afaik vc vai ter que >escrever uma função PL/SQL pra isto, lendo e manipulando o LOB via >rotinas da package DBMS_LOB. > >[]s > > Chiappa >--- Em oracle_br@yahoogrupos.com.br, Thiago Menon <[EMAIL PROTECTED]> escreveu > > >>Td bem, só que no meu caso eu precisaria de usar a funcao TO_CHAR, pois >>eu preciso recuperar esse valor no PHP. >> >>Qdo eu nao utilizo o TO_CHAR e pego o valor de um campo do tipo CLOB >> >> >ele > > >>retorna OBJECT, se eu utilizar o TO_CHAR com o banco 9i não da erro >>nenhum e exibe o texto certo, com o banco 8i da erro de conversão. >> >>Dai pensei nas seguintes possibilidades para solucionar esse problema. >>1° seria fazer alguma funcao no oracle q retorno o campo como se fosse >>um varchar2. (essa opçao nao consegui, obtive o mesmo erro mesmo com >> >> >pl/sql) > > >>2° ver se eu consigo fazer algo no PHP que execute algum script no >> >> >linux > > >>q entre no sqlplus faça um SELECT do campo q eu quero exibir, salve o >>resultado em um arquivo, dai eu volto para o PHP e leio esse arquivo e >>exibo aonde tiver q exibir. (estou pensando em como fazer isso) >>3° ver se a atualização do path do oracle 8i para netware arruma esse >>erro. ( mas eu nao tenho senha do metalink, to arrumando) >> >>Em todo caso muito obrigado >>Thiago >>msn: [EMAIL PROTECTED] >> >> >>jlchiappa escreveu: >> >> >> >>>OK, mas isso é pra casos que extrapolem limites do cliente : *** SE >>>*** vc está usando sqlplus, como iirc vc disse em outra msg, >>>ABSOLUTAMENTE vc não precisa fazer conversão ALGUMA, o sqlplus 8i é >>>TOTALMENTE capz de exibir CLOBs até o limite definido pelo longsize : >>> >>> >>>[EMAIL PROTECTED]:SQL>create table TBL_EQUIP_TIPOS(ID number, >>> 2 TIPO char(1), >>> 3 TEXTO_PADRAO CLOB >>> 4 ); >>> >>>Tabela criada. >>> >>>[EMAIL PROTECTED]:SQL>insert into TBL_EQUIP_TIPOS values(1, 'A', 'Este é o >>>texto do tipo A id=1 !!!'); >>> >>>1 linha criada. >>> >>>[EMAIL PROTECTED]:SQL>commit; >>> >>>Validação completa. >>> >>>[EMAIL PROTECTED]:SQL>select * from TBL_EQUIP_TIPOS; >>> >>> ID T TEXTO_PADRAO >>>------------------ - ------------------------------------------------- >>>------------------------------- >>> 1 A Este é o texto do tipo A id=1 !!! >>> >>> >>>[EMAIL PROTECTED]:SQL>insert into TBL_EQUIP_TIPOS values(2, 'B', lpad('X', >>>4000, '*')); >>> >>>1 linha criada. >>> >>>[EMAIL PROTECTED]:SQL> >>> >>>[EMAIL PROTECTED]:SQL>BEGIN >>> 2 insert into TBL_EQUIP_TIPOS values(3, 'C', lpad('Y', >>>32767, '$')); >>> 3 END; >>> 4 / >>> >>>Procedimento PL/SQL concluído com sucesso. >>> >>>[EMAIL PROTECTED]:SQL>select * from TBL_EQUIP_TIPOS; >>> >>> ID T TEXTO_PADRAO >>>------------------ - ------------------------------------------------- >>>----------------- >>> 1 A Este é o texto do tipo A id=1 !!! >>> 2 B >>>****************************************************************** >>> 3 C >>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>> >>>[EMAIL PROTECTED]:SQL>set lines 80 >>> >>>[EMAIL PROTECTED]:SQL>set long 33000 <<== este é o cara pra ajuste do >>>plus, é documentado no sqlplus user´s guide... >>> >>>-- agora farei um SELECT simples, sem aquele TO_CHAR absurdo (só por >>>causa do espaço aqui do Fórum, vou EDITAR alguns dos "*" e dos "$" , >>>mas eles apareceram direitinho aqui na tela) : >>> >>>[EMAIL PROTECTED]:SQL>select * from TBL_EQUIP_TIPOS; >>> >>> ID T >>>------------------ - >>>TEXTO_PADRAO >>>---------------------------------------------------------------------- >>>---------- >>> 1 A >>>Este é o texto do tipo A id=1 !!! >>> >>> 2 B >>>********************************************************************** >>>********** >>>********************************************************************** >>>********** >>>..... >>>********************************************************************** >>>********** >>>********************************************************************** >>>*********X >>> >>> 3 C >>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>>$$$$$$$$$$ >>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>>$$$$$$$$$$ >>>........ >>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>>$$$$$$$$$$ >>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>>$$$$$$$$$Y >>> >>> >>>[EMAIL PROTECTED]:SQL> >>> >>>[]s >>> >>>Chiappa >>> >>>--- Em oracle_br@yahoogrupos.com.br, Thiago Menon <[EMAIL PROTECTED]> >>>escreveu >>> >>> >>> >>> >>>>Cara muito obrigado pela ajuda. >>>> >>>>Vou procurar sobre dbms_lob. >>>> >>>>valeu >>>>Thiago >>>> >>>>jlchiappa escreveu: >>>> >>>> >>>> >>>> >>>> >>>>>Colega, manipulações de datatypes realmente muitas vezes MUDAM >>>>> >>>>> >>>>> >>>>> >>>mesmo >>> >>> >>> >>> >>>>>em cada versão de banco, e/ou novos datatypes são adicionados, é >>>>>natural... No caso em questão, é documentado que quando vc chama >>>>> >>>>> >>>>> >>>>> >>>uma >>> >>> >>> >>> >>>>>função com um argumento de datatype não-esperado há conversão >>>>>implícita (manual "Oracle8i SQL Reference", cap. 4 - Functions, >>>>>), e o mesmo manual cap. 2 - Basic Elements of Oracle SQL, na >>>>>tabela "Table 2-6 SQL Functions for Datatype Conversion" mostra >>>>> >>>>> >>>>> >>>>> >>>que >>> >>> >>> >>> >>>>>** NÃO HÁ ** conversão implícita entre CHAR e LOB. >>>>>Já no banco 9i, o manual "Oracle9i SQL Reference" no cap. 6, >>>>> >>>>> >>>>> >>>>> >>>itens >>> >>> >>> >>> >>>>>Functions, nos diz : >>>>> >>>>>----------------------------------------------------------- >>>>>SQL Functions >>>>>Note: >>>>>When you apply SQL functions to LOB columns, Oracle creates >>>>> >>>>> >>>>> >>>>> >>>temporary >>> >>> >>> >>> >>>>>LOBs during SQL and PL/SQL processing. You should ensure that >>>>>temporary tablespace quota is sufficient for storing these >>>>> >>>>> >>>>> >>>>> >>>temporary >>> >>> >>> >>> >>>>>LOBs for your application. >>>>> >>>>>==> OU seja, é um comportamento novo/melhoria DO 9i, sim ??? >>>>> >>>>> >>>>> >>>>> >>>Aliás, é >>> >>> >>> >>> >>>>>EXATAMENTE por isso que é MUITO MUITO recomendável que vc >>>>> >>>>> >>>>> >>>>> >>>desenvolva >>> >>> >>> >>> >>>>>e tenha os seus bancos de teste EXATAMENTE NA MESMA versão... >>>>> >>>>>A solução 8i é usar as built-ins PL/SQL específicas para LOB no >>>>> >>>>> >>>>> >>>>> >>>8i, >>> >>> >>> >>> >>>>>são as da package DBMS_LOB, vc acha ref sobre elas tanto no manual >>>>> >>>>> >>>>> >>>>> >>>de >>> >>> >>> >>> >>>>>Concepts quanto no PL/SQL user´s Guide. >>>>> >>>>>[]s >>>>> >>>>>Chiappa >>>>> >>>>>--- Em oracle_br@yahoogrupos.com.br, Thiago Menon <[EMAIL PROTECTED]> >>>>>escreveu >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>>Estou com o seguinte problema. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>>Qdo eu faço uma query em uma tabela com um campo que tem o tipo >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>= >>> >>> >>> >>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>CLOB >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>>>eu utilizo TO_CHAR(campo), para recuperar o valor. >>>>>>> >>>>>>>Isso funciona lega no banco com versão 9i mas meu servidor está >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>rodando >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>>>o 8i e ele nao aceita fala q o tipo é invalido. >>>>>>>Alguem sabe como posso solucionar isso ? >>>>>>> >>>>>>> >>>>>>>Erro no SqlPlus: >>>>>>>SQL> SELECT ID, TIPO, TO_CHAR(TEXTO_PADRAO) AS TEXTO >>>>>>>2 FROM TBL_EQUIP_TIPOS >>>>>>>3 ORDER BY TIPO; >>>>>>>SELECT ID, TIPO, TO_CHAR(TEXTO_PADRAO) AS TEXTO >>>>>>> * >>>>>>>ERRO na linha 1: >>>>>>>ORA-00932: inconsistent datatypes >>>>>>> >>>>>>> >>>>>>>muito obrigado >>>>>>>Thiago >>>>>>>Msn: [EMAIL PROTECTED] >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>> >>>>> >>>>>------------------------------------------------------------------- >>>>> >>>>> >>>>> >>>>> >>>------------------------------------------------------- >>> >>> >>> >>> >>>>>Atenção! As mensagens deste grupo são de acesso público e de >>>>> >>>>> >>>>> >>>>> >>>inteira responsabilidade de seus remetentes. >>> >>> >>> >>> >>>>>Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ >>>>>------------------------------------------------------------------- >>>>> >>>>> >>>>> >>>>> >>>------------------------------------------------------- >>>__________________________________________________________________ >>> >>> >>> >>> >>>>>Este Grupo recebe o apoio da SQL Magazine - >>>>> >>>>> >>>>> >>>>> >>>www.devmedia.com.br/sqlmagazine >>> >>> >>> >>> >>>>>__________________________________________________________________ >>>>>O grupo Oracle_br não aceita anexos. Quando oferecer algum >>>>> >>>>> >>>>> >>>>> >>>arquivo, tenha o link do mesmo para evitar trafego(pedidos) >>>desnecessário. >>> >>> >>> >>> >>>>>Links do Yahoo! Grupos >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>> >>> >>> >>> >>> >>> >>-------------------------------------------------------------------------------------------------------------------------- >> >> >>>Atenção! As mensagens deste grupo são de acesso público e de >>> >>> >inteira responsabilidade de seus remetentes. > > >>>Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ >>> >>> >>--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ >> >> >>>Este Grupo recebe o apoio da SQL Magazine - >>> >>> >www.devmedia.com.br/sqlmagazine > > >>>__________________________________________________________________ >>>O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, >>> >>> >tenha o link do mesmo para evitar trafego(pedidos) desnecessário. > > >>>Links do Yahoo! Grupos >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> > > > > > > > >-------------------------------------------------------------------------------------------------------------------------- >Atenção! As mensagens deste grupo são de acesso público e de inteira >responsabilidade de seus remetentes. >Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ >--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ > >Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine >__________________________________________________________________ >O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o >link do mesmo para evitar trafego(pedidos) desnecessário. >Links do Yahoo! Grupos > > > > > > > > > > -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine __________________________________________________________________ O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário. Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html