Oracle 触发器中新行上的Lob定位器

Oracle 触发器中新行上的Lob定位器,oracle,plsql,triggers,blob,Oracle,Plsql,Triggers,Blob,我正在尝试创建一个触发器,它将blob从表B复制到表a中新创建的行中。但是,当应该执行触发器时,我得到错误ORA-22275(指定的lob定位器无效)。我可以想象我访问新行blob的方式是不正确的,有人能给我指出正确的方向吗 触发器的代码: CREATE OR REPLACE TRIGGER COPY_BLOB BEFORE INSERT ON TABLE_A FOR EACH ROW DECLARE src blob; BEGIN SELECT bytes INTO src FR

我正在尝试创建一个触发器,它将blob从表
B
复制到表
a
中新创建的行中。但是,当应该执行触发器时,我得到错误
ORA-22275
(指定的lob定位器无效)。我可以想象我访问新行blob的方式是不正确的,有人能给我指出正确的方向吗

触发器的代码:

CREATE OR REPLACE TRIGGER COPY_BLOB
BEFORE INSERT ON TABLE_A
FOR EACH ROW
DECLARE
  src blob;
BEGIN
     SELECT bytes INTO src FROM table_b WHERE id = :new.ref_id; 
     DBMS_LOB.COPY(:new.bytes, src, DBMS_LOB.GETLENGTH(src), 1, 1);
END;
/

你的触发器应该是:

SELECT bytes 
  INTO :new.bytes 
  FROM table_b 
 WHERE id = :new.ref_id;

根本不需要使用DBMS_LOB包。

谢谢,您的声明很有效。在速度方面有什么区别吗?是
select
语句还是
DMBS COPY
更快?@Teinacher select会更快(oracle会在封面下为您复制lob)