Olá pessoal, Preciso converter o conteúdo de um campo tipo LONG para VARCHAR2. Estou ciente o campo do tipo VARCHAR2 é limitado, sendo que o campo do tipo LONG poderá ser maior que o tamanho máximo do VARCHAR2. Encontrei na a seguinte função: CREATE OR REPLACE FUNCTION LONG_TO_CHAR( IN_ROWID ROWID , IN_OWNER VARCHAR , IN_TABLE_NAME VARCHAR , IN_COLUMN VARCHAR2 ) RETURN VARCHAR AS /* CREATE BY: D.Jenkins Date: 28-Apr02003
Use: Long to varchar2 conversion, to allow a substring on long column in the table; Notes: Errors out with varchar > 32767 ORA-06502: PL/SQL: numeric or value error: character string buffer too small Synonyms and Grants: create public synonym LONG_TO_CHAR for synergen.CDBF_LONG_TO_CHAR; grant execute as required or grant execute long_to_char to public; */ text_c1 varchar2(32767); sql_cur varchar2(2000); -- begin sql_cur := 'select '||in_column||' from'||in_owner||'.'||in_table_name||' where rowid ='||chr(39) ||in_rowid||chr(39); dbms_output.put_line (sql_cur); execute immediate sql_cur into text_c1; text_c1 := substr(text_c1, 1, 4000); RETURN TEXT_C1; END; Crie ela no meu banco, e ao executá-la numa select é mostrada a seguinte mensagem: ORA-00923: FROM keyword not found where expected ORA-06512: at "NACOVOLO.LONG_TO_CHAR", line 33 O conteúdo da linha 33 da função é a seguinte: execute immediate sql_cur into text_c1; Meu banco é 10.2.0.1.0 Atribuições do owner da função: Atribuição Opção Admin Default CONNECT Y Y DBA Y Y A select que executo é a seguinte: select fila_eai.cdn_tipo_fila TIPO_FILA , fila_eai.cdn_tipo_mensagem TIPO_MENSAGEM , LONG_TO_CHAR( ROWID -- IN_ROWID , 'EAIPORO8P964' -- IN_OWNER , 'FILA_EAI' -- IN_TABLE_NAME , 'DES_CONTEUDO' -- IN_COLUMN ) DES_CONTEUDO from EAIPORO8P964.FILA_EAI where TRIM(FILA_EAI.U##DTA_GERACAO) IS NULL Peço a gentileza da ajuda do pessoal da lista para que eu consiga converter um campo do tipo LONG para VARCHAR2 como retorno de uma select. Agradeço a atenção de todos, e ficarei na expectativa de um breve retorno. Nelson Antonio da Cruz Covolo -------------------------------------------------------------------------------------------------------------------------- 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/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __________________________________________________________________ Seu banco Oracle retornou erro? Ora-??? Pesquise aqui: http://www.oraclebr.com.br/ 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