日期:2014-05-17  浏览次数:20831 次

.net读不出oracle系统表的long字段内容!
我要从系统表读字段的默认值,sys.col$记录了这些内容,其中的default$字段是long类型,记录了默认值。
中但是vb.net把表读到dataset后,再访问该字段,得到空字符串!
vs.2003和vs.2005都是这样,说明不是.net的问题;
我的电脑和同事的电脑都这样,说明不是oracle客户端的问题,而且PL/SQL   Developer中可以读到。
但是我自己定义的表,当中的long字段,却可以读出正确内容。
---------------------------------------
快疯了,帮帮忙,有没有人遇到这个情况?

------解决方案--------------------
用存储过程吧
------解决方案--------------------
是否权限问题,别的字段可以吗?
------解决方案--------------------
用byte试一试
------解决方案--------------------
我也遇到了这个问题,真不知道怎么解决呀
------解决方案--------------------
SQL code
LONG to VARCHAR2 Function




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;
/

------解决方案--------------------
支持搂主,收藏