关于操作LOB的问题

jjja 2003-10-09 11:57:14
如有表TEST_BLOB
create table TEST_BLOB
(
A CHAR(10),
B CHAR(10),
C BLOB,
)
现在我想对这个表建一个触发器,目的时当这个表的数据发生变化时将这个表发生变化的记录更新到另一张表中,另一个表结构和这个表一致.
create or replace trigger t3 AFTER INSERT ON TEST_BLOB FOR EACH ROW
BEGIN
INSERT INTO BAK_DEP.TEST_BLOB VALUES(:new.A,:new.B,:new.C);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END t3;
不知道这样写行不行,因为对于LOB(BLOB和CLOB)类型字段,可能操作与一般字段不同.
...全文
61 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjja 2003-10-21
  • 打赏
  • 举报
回复
解决了,tmd的应该和操作普通字段是一样的.
jjja 2003-10-14
  • 打赏
  • 举报
回复
继续求解中......
jjja 2003-10-13
  • 打赏
  • 举报
回复
能不能针对我得问题给个具体的例子?
还有DBMS_LOB的资料到哪找呀?
yangqingdelphi 2003-10-11
  • 打赏
  • 举报
回复
LOB字段放的是指针.
cenlmmx 2003-10-10
  • 打赏
  • 举报
回复
学习
jjja 2003-10-10
  • 打赏
  • 举报
回复
不知Oracle中存放的是LOB型字段本身还是它的指针?
chanet 2003-10-10
  • 打赏
  • 举报
回复
在:
INSERT INTO BAK_DEP.TEST_BLOB VALUES(:new.A,:new.B,:new.C);
-----------------------
加一个 TO_LOB() 函数规范化试试.
yflag 2003-10-10
  • 打赏
  • 举报
回复
这样应该是不行的啦
对内部LOB字段而言oracle中存放的是LOB的定位器(可理解为指向LOB的指针)
对LOB的使用和维护主要有三种方法:
1、使用DBMS_LOB包
2、调用OCI
3、Proc *c/c++
4、JAVA/JDBC
以使用DBMS_LOB为例:
欲实现触发器功能 ,对BLOB字段应作如下特殊处理
1、触发时,先将BLOB字段新内容读到缓冲区
格式如下:DBMS_LOB.READ(blobloc,amount,offset,buffer);
其中blobloc指BLOB定位器,amount指读入字节数,offset指操作偏移量,buffer指缓冲区
2、将缓冲区内容写入另一个表的BLOB字段
格式如下:DBMS_LOB.WRITE(blobloc,amount,offset,buffer)参数含义与上类同

jjja 2003-10-10
  • 打赏
  • 举报
回复
我考,搞了半天就没有来搞点实质性的
Nickle_Final 2003-10-10
  • 打赏
  • 举报
回复
关注
jjja 2003-10-09
  • 打赏
  • 举报
回复
我估计应该不行
jjja 2003-10-09
  • 打赏
  • 举报
回复
没人知道吗?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧