触发器-6
2012-03-26 09:59 java ee spring 阅读(175) 评论(0) 编辑 收藏 举报--内置程序包
--案例15:验证dbms_output设置选项
SQL>set serveroutput on
SQL> set serveroutput on
SQL> set serveroutput on size 5000
declare
str varchar2(20):='hello world!';
begin
dbms_output.put(str); /*结果屏幕上不会显示任何东西,dbms_output.put不具备显示功能*/
end;
declare
str varchar2(20):='hello world!';
begin
dbms_output.put(str);
dbms_output.put_line('good');--具有显示功能
end;
/*这里面由于有两次将变量值保存到缓存中,所以打印时将缓存里面所有的值显示出来*/
--案例16-02:演示DBMS_LOB使用
--01.新建表
create table downfilelist
(
id varchar(20) not null primary key,
name varchar(40) not null, /*文件存放位置*/
filelocation bfile, /*文件描述*/
description clob
);
--02.新建需要的目录
/*
新建目录格式:;
create or replace directory 目录名 as ‘本地或网络共享路径名’;
*/
create or replace directory filedir as 'f:\downlist' ;
--或
create or replace directory filedir as '\\servername\downlist' ;
--03.对表的中数据操作
-a.插入数据到表中,对bfile类型的字段使用bfilename函数
insert into downfilelist values ('00001', 'java入门', bfilename(upper('filedir'), 'java.zip'), '这是一本使你快速学会的java教材');
-b.更新lob
select description from downfilelist where id='00001';
update downfilelist set description ='这是一本使你快速学会oracle的书', filelocation=bfilename(upper('filedir'), 'oracle.zip')
where id='00001';
select id, name, description from downfilelist; /*在sqlplus中需要这样写否则无法显示或则不能写:
select * from downfilelist;
*/
--案例16-02:演示DBMS_LOB使用:read
declare
tempdesc clob;
ireadcount int;
istart int;
soutputdesc varchar(100);
begin
ireadcount:=5;
istart:=1;
select description into tempdesc from downfilelist where id='00001';
dbms_lob.read(tempdesc, ireadcount, istart, soutputdesc); /*从istart取值,取ireadcont个*/
dbms_output.put_line('前五个字符是:'||soutputdesc);
end;
--案例16-03:演示DBMS_LOB使用:getlength
/*统计字符串长度*/
declare
tempclob clob;
ilen int;
begin
select description into tempclob from downfilelist where id='00001';
ilen:=dbms_lob.getlength(tempclob);
dbms_output.put_line('描述的字段长度为:'||ilen);
exception
when others then
dbms_output.put_line(sqlcode || ' ' ||sqlerrm);
end;
--案例16-03:演示DBMS_LOB使用:write
declare
tempdesc clob;
icount int;
istart int;
snewvar varchar2(30);
begin
icount:=2;
istart:=1;
snewvar:='这是非常畅销的书';
select description into tempdesc from downfilelist
where id='00001' for update;
/*修改大数据时可能速度很慢所以锁定以便提高速度*/
dbms_output.put_line('更改前::'||tempdesc);
dbms_output.put_line('从' ||istart || '开始的'||icount ||'个字符将被改写成:'||snewvar);
dbms_lob.write(tempdesc, icount, istart, snewvar);
commit; /*修改完数据后需要解锁所以提交否则别的用户不能使用数据*/
end;
select * from downfilelist where id=00001;