这是getclobnew的函数 lobloc clob; buffer varchar2(32767); amount number := 30000;//如果这里写的是3000以下。加不加order by 都不会出错 offset number := 1; query_str varchar2(1000); begin dbms_lob.read(lobloc,amount,offset,buffer); return buffer; exception when no_data_found then return buffer; varchar2最大支持多长。还有就是是不是数据库配置的问题。什么地方分配的内存小了。
-->可以理解,可能是sort在硬盘上了但是出错无法理解
lobloc clob;
buffer varchar2(32767);
amount number := 30000;//如果这里写的是3000以下。加不加order by 都不会出错
offset number := 1;
query_str varchar2(1000);
begin
dbms_lob.read(lobloc,amount,offset,buffer);
return buffer;
exception
when no_data_found then
return buffer;
varchar2最大支持多长。还有就是是不是数据库配置的问题。什么地方分配的内存小了。
改这个东西是不是要重启数据库啊。
存储过程或函数参数,最多只支持4000个字节吗?
buffer varchar2(32767);
那我这够话怎么不会出错啊。
Order by语句对要排序的列没有什么特别的限制,也可以将函数加入列中(象联接或者附加等)。任何在Order by语句的非索引项或者有计算表达式都将降低查询速度。
仔细检查order by语句以找出非索引项或者表达式,它们会降低性能。解决这个问题的办法就是重写order by语句以使用索引,也可以为所使用的列建立另外一个索引,同时应绝对避免在order by子句中使用表达式。
這速度至少有數百倍之差,其他的就是上面說的了
我测试发现如果lobloc这个字段要是太大。像超过10000字节。就会出错。
错误是: 字符串缓冲区太小 ORA-06512
但我的buffer明明是32767。还是没有搞清楚。
希望大家来看看
我想他是没错误的。
那个错误: 字符串缓冲区太小 ORA-06512
是不是说我在select 语句中的字符串缓冲区太小。
也就是说select语句不能查询超过多少的字节的字符串啊。
可不可以在什么地方设置select语句支持的最大字节数啊。
大家再不回答。我也发不了回复了。
顶一下也可以。