暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

32k限制使用ODBC和oracle从mysql检索媒体文本

askTom 2017-03-10
354

问题描述


我在使用ODBC (unixODBC) 连接到mysql服务器的Oracle上有一个db链接;

在mysql服务器中,我有一个带有blob和mediumtext (16M) 字段的表。

如果在oracle中我执行desc “table' @ dblink,oracle将blob字段显示为long raw,而mediumtext字段显示为long。

如果我执行这样的查询: 从 “表” @ dblink中选择 “text_column”,它只返回文本的前32k (32760)。
文本更大 (400k)。

我阅读了unixODBC em mysql驱动程序的文档,但没有发现有关这些字段的限制的任何信息...

有谁知道如何解决这两台服务器之间的这种限制?

谢谢。

MySQL ODBC 5.1驱动程序

专家解答

尝试这样的东西 (不确定它是否会工作,因为我没有mysql长时间浮动)

declare
    l_cursor    integer default dbms_sql.open_cursor;
    l_n         number;
    l_long_val  varchar2(250);
    l_long_len  number;
    l_buflen    number := 250;
    l_curpos    number := 0;
begin
    dbms_sql.parse( l_cursor, 'select col1, col2, longcol from my_table@remote', dbms_sql.native );

    dbms_sql.define_column_long(l_cursor, 1);
    l_n := dbms_sql.execute(l_cursor);

    if (dbms_sql.fetch_rows(l_cursor)>0)
    then
        loop
            dbms_sql.column_value_long(l_cursor, 1, l_buflen, l_curpos ,
                                        l_long_val, l_long_len );
            l_curpos := l_curpos + l_long_len;
            dbms_output.put_line( l_long_val );
            exit when l_long_len = 0;
      end loop;
   end if;
   dbms_sql.close_cursor(l_cursor);
exception
   when others then
      if dbms_sql.is_open(l_cursor) then
         dbms_sql.close_cursor(l_cursor);
      end if;
      raise;
end;
/


复制


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论