表 article 有一个info 大字段列,存储的文章的详细信息,现在要循环取出10条记录,并且包含大字段info的前100个字符如何写这个sql语句,并且操作以后能释放大字段的(游标或是指针)?现在用 SELECT * FROM v$open_cursor 查看打开的游标发现很多类似这样的东西table_4_200_76f3_0_0_0
table_4_2000_769c_0_0_0网上说是大字段周围的指针下面附网上的原文章,这样的问题应该如何排查呢?
V$OPEN_CURSOR中奇怪的项  
  
为什么V$OPEN_CURSOR.SQL_TEXT以"table_4_xxxx_x_x_x_ x"的形式进行显示?V$OPEN_CURSOR中的多数项都与此类似。我的数据库客户机是Oracle8i 8.1.7版的JDBC瘦驱动程序,操作系统为Sun Solaris 8。例如:  
  
select user_name, count(1) as count, sql_text  
from sys.v_$open_cursor  
group by user_name, sql_text 
order by count; 
USER_NAME  COUNT  SQL_TEXT 
---------  -----  ---------------------  
ORACLE  1  select user_name, ... 
SGMASTER  1  SELECT PROPERTY_N... 
SGMASTER  5  INSERT INTO ...  
SGMASTER  7  table_4_200_5ee2_0_0_0 
SGMASTER  12  table_4_2000_5ed8_0... 
SGMASTER  12  table_4_200_5ed8_0_0_0 
SGMASTER  12  table_e_400_5ed8_2_0_0 
  
这些项与LOB周围的隐藏指针相连接。当你有一个为读/写而打开的LOB时,你会在V$OPEN_ CURSOR中发现这些神秘项中的一个。利用嵌套表也可以看到它们(在创建或访问时)。  
  
在这种情况下,看起来似乎你的所有项都是LOB指针。带有TABLE_4_*的项表明打开的LOB是用于读取的,而带有TABLE_E_*的项表示打开的LOB是用于写入的。考虑清单 2中的例子,它是一个为读取而打开的LOB,而清单 3中的例子是为写入而打开的LOB。  
  
在清单 3中以WRITE模式的例子可以看出,TABLE_E项出现了。有趣的是,SQL_TEXT中间的数字(在本例中为9912)实际上是以十六进制表示的包含LOB的表的OBJECT_ID号:  
  
SQL> select object_name, object_type 
   2  from user_objects 
   3  where object_id = to_number('9912', 'XXXX'); 
  
OBJECT_NAME         OBJECT_TYPE 
-----------         ----------- 
T                  TABLE 
  
所以利用这些项不仅可以看到打开的LOB,还可以确定它们来自哪些表。