
这样读取:declare /声明PL/SQL中程序块中的变量info_var,用户存放查询到的info列的数据,其类型必须和表中的字段类型一致/ info_var clob; --查询数据长度 amount integer; --偏移量,查询起始位置 offset integer; --需要打印的字节,存储变量 info_output varchar2(1000); begin --查询要打印的字段信息并赋值给info_var select info into info_var from t_clob where id = 1; --查询100长度 amount :=100; --从第一个开始 offset :=1; --用dbms_lob程序包读取数据 dbms_lobread(info_var,amount,offset,info_var); --用dbms_lob程序包打印读取得数据info_var dbms_outputput_line(info_var); end; /
读取mysql数据库文本字段的值方法如下:
publicvoidread(){
try{
//连接数据库
conn=JdbcUtils();
//查询resume字段,text格式
Stringsql="selectresumefromtestclobwhereid=1";
pt=conn(sql);
//执行查询并返回结果
rs=pt();
if(rsnext()){
//rs读取该字段
Readerreader=rs("resume");
//定义字符数组来存放读取值
charbuffer[]=newchar[1024];
while((readerread(buffer))!=-1){
//打印
Systemoutprintln(buffer);
}
readerclose();
}
}catch(Exceptione){
e();
}finally{
JdbcUtilsrelease(conn,pt,rs);
}
}
修改CLOB的PL/SQL过程:updateclob create or replace procedure updateclob( table_name in varchar2, field_id in varchar2, field_name in varchar2, v_id in number, v_pos in number, v_clob in varchar2) is lobloc clob; c_clob varchar2(32767); amt binary_integer; pos binary_integer; query_str varchar2(1000); begin pos:=v_pos32766+1; amt := length(v_clob); c_clob:=v_clob; query_str :='select '||field_name||' from '| |table_name||' where '||field_id||'= :id for update '; --initialize buffer with data to be inserted or updated EXECUTE IMMEDIATE query_str INTO lobloc USING v_id; --from pos position, write 32766 varchar2 into lobloc dbms_lobwrite(lobloc, amt, pos, c_clob); commit; exception when others then rollback; end; /具体用法说明: 在插入或修改以前,先把其它字段插入或修改,CLOB字段设置为空empty_clob(),然后调用以上的过程插入大于2048到32766个字符。 查询CLOB的PL/SQL函数:getclob create or replace function getclob( table_name in varchar2, field_id in varchar2, field_name in varchar2, v_id in number, v_pos in number) return varchar2 is lobloc clob; buffer varchar2(32767); amount number := 2000; offset number := 1; query_str varchar2(1000); begin query_str :='select '||field_name||' from '||table_name||' where '||field_id||'= :id '; --initialize buffer with data to be found EXECUTE IMMEDIATE query_str INTO lobloc USING v_id; offset:=offset+(v_pos-1)2000; --read 2000 varchar2 from the buffer dbms_lobread(lobloc,amount,offset,buffer); return buffer; exception when no_data_found then return buffer; end; /具体用法说明: 用select getclob(table_name,field_id,field_name,v_id,v_pos) as partstr from dual; 可以从CLOB字段中取2000个字符到partstr中,编一个循环可以把partstr组合成dbms_lobgetlength(field_name)长度的目标字符串。
在Oracle中,可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符。其语法为:
eg: dbms_lobinstr(字段名(clod类型),'查询条件',1,1)
其中sourceString代表想要查询的字段;
destString代表查询条件;
start代表查找的开始位置,该参数可选的,默认为1;
appearPosition代表想从源字符中查找出第几次出现的destString,该参数也是可选的,默认为1;
如果start的值为负数,那么代表从右往左进行查找。
返回值为:当目标字符串没有在源字符串中找到,返回0;当源字符串或目标字符串为null,则返回null;
其他情况则返回目标字符串在源字符串中的其实位置
你好,如果是含有NCLOB,那么建议使用exp和imp进行处理,如果不会使用命令行,可以使用PLSQL直接导出,方法为:登录需要导出数据的数据库,点击plsql的tools/exporttables,在列表中选择要导出的表,然后在outputfile处选择相应的存储目录,最后点击export就可以将该表导出。当数据导出后,使用plsql登录需要导入数据的数据库,点击plsql的tools/importtables,在importfile中浏览文件,选中刚刚导出的dmp文件,然后点击import就可以将数据导入库
我擦,clob类型也只不过是个类型而已。搞那么复杂做啥。和普通字段一样查询就行了:select t那个clob的字段名 from 表名 t科普一下:oracle有clob和blobl两种大对象类型的数据类型。clob是存字符的(可以认为是超大容量的varchar类型,最大存储4G)。blob是存二进制的。要注意的是带有clob、blob类型的表时不能导出sql文件,sql文件只能导出小对象类型。
以上就是关于怎么从ORACLE中读取CLOB类型的数据全部的内容,包括:怎么从ORACLE中读取CLOB类型的数据、读取mysql数据库文本字段的值方法(mysql获取表字段信息)、实例讲解如何处理CLOB字段的动态PL/SQL等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)