Oracle如何操作LOB

DBMS_LOB

CREATE TABLE lob_table (
      key_value      INTEGER,
      b_lob          BLOB,
      c_lob          CLOB,
      n_lob          NCLOB,
      f_lob          BFILE);


INSERT INTO a_table values (empty_blob());

INSERT INTO lob_table VALUES
         (21, NULL, NULL, NULL, BFILENAME('IMG', 'image1.gif'));

INSERT INTO lob_table VALUES
         (22, NULL, NULL, NULL, BFILENAME('IMG', 'image2.gif'));

UPDATE lob_table SET f_lob = BFILENAME('IMG', 'image3.gif')
        WHERE key_value = 22;
UPDATE lob_table
   SET f_lob = (SELECT f_lob FROM lob_table WHERE key_value = 22)    
   WHERE key_value = 21;

CREATE DIRECTORY scott_dir AS '/usr/home/scott';


Maximum Number of Open BFILEs
SESSION_MAX_OPEN_FILES=20
INSERT INTO lob_table
   VALUES (1, NULL, 'abcd', NULL, NULL);

COMMIT;

DECLARE
  num_var           INTEGER;
  clob_selected     CLOB;
  clob_updated      CLOB;
  clob_copied       CLOB;
  read_amount       INTEGER;
  read_offset       INTEGER;
  write_amount      INTEGER;
  write_offset      INTEGER;
  buffer            VARCHAR2(20);  
BEGIN

  SELECT c_lob INTO clob_selected FROM lob_table WHERE key_value = 1;

  SELECT c_lob INTO clob_updated FROM lob_table WHERE key_value = 1 FOR UPDATE;
 
  clob_copied := clob_selected;

  read_amount := 10;
  read_offset := 1; 

  dbms_lob.read(clob_selected, read_amount, read_offset, buffer);

--  dbms_output.put_line('clob_selected value: ' || buffer);
insert into temp values(1,buffer);
 
  read_amount := 10;
  dbms_lob.read(clob_copied, read_amount, read_offset, buffer);
--  dbms_output.put_line('clob_copied value: ' || buffer);
insert into temp values(2,buffer);
 
  read_amount := 10;
  dbms_lob.read(clob_updated, read_amount, read_offset, buffer);
--  dbms_output.put_line('clob_updated value: ' || buffer);
insert into temp values(3,buffer);
 
  -- At time t4:
  write_amount := 3;
  write_offset := 5;
  buffer := 'efg';
  dbms_lob.write(clob_updated, write_amount, write_offset, buffer);
 
  read_amount := 10;
  dbms_lob.read(clob_updated, read_amount, read_offset, buffer);
--  dbms_output.put_line('clob_updated value: ' || buffer);
insert into temp values(4,buffer);
 
  read_amount := 10;
  dbms_lob.read(clob_selected, read_amount, read_offset, buffer);
--  dbms_output.put_line('clob_selected value: ' || buffer);
insert into temp values(5,buffer);
  -- Produces the output 'abcd'
 
  read_amount := 10;
  dbms_lob.read(clob_copied, read_amount, read_offset, buffer);
--  dbms_output.put_line('clob_copied value: ' || buffer);
insert into temp values(6,buffer);
  -- Produces the output 'abcd'
END;
/
OCILobGetLength()    OCILobWrite()

FUNCTION EMPTY_BLOB() RETURN BLOB;
FUNCTION EMPTY_CLOB() RETURN CLOB;
FUNCTION BFILENAME(directory_alias IN VARCHAR2,filename IN VARCHAR2) RETURN BFILE;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值