如何在 触发器 中 操作 BLOB 列 ?
如何在 触发器 中 操作 BLOB 列 ?
以下是我写的触发器
功能是,当向本地数据库中 "新闻表 "(T_NEWS)中
插入数据前向远程的数据库插入相同的数据,
达到数据同步效果
--------------------------------------------------
CREATE OR REPLACE TRIGGER "JLWEB ". "/uXATMqarWBoz+c5E1c=865f4d96 "
BEFORE
INSERT ON "T_NEWS " FOR EACH ROW
BEGIN
INSERT INTO "JLWEB ". "T_NEWS "@ "J865F4D96.SYN.US.ORACLE.COM " ( "NEWSID ", "SORTID ", "NEWSMODIFDATE ", "NEWSTITLE ", "USERID ", "NEWSCONTENT ")
VALUES(:NEW. "NEWSID ",:NEW. "SORTID ",:NEW. "NEWSMODIFDATE ",:NEW. "NEWSTITLE ",:NEW. "USERID ",:NEW. "NEWSCONTENT ");
EXCEPTION WHEN OTHERS
THEN
RAISE_APPLICATION_ERROR(-20008, '操作远程数据时出错. ' || SQLCODE||SUBSTR(SQLERRM,1,200));
END;
--------------------------------------------------
但当我插入数据时ORACLE会出现异常
ORA-20008: 操作远程数据时出错. -2068ORA-02068: 以下严重错误源于J865F4D96.SYN.US.ORACLE.COM
ORA-00600: 内部错误代码,参数: [kokegPinLob1], [], [], [], [], [], [], []
ORA-06512: 在 "JLWEB./uXATMqarWBoz+c5E1c=865f4d96 ", line 1
ORA-04088: 触发器 'JLWEB./uXATMqarWBoz+c5E1c=865f4d96 ' 执行过程中出错
ORA-06512: 在line 1
其中 "NEWSCONTENT " 列为 BLOB 型,如果插入时不插这一列就不出异常.
希望高手帮忙解决下这个问题..
先谢了.
[解决办法]
create or replace directory utllobdir as 'c:\xxx '; --你的BLOB文件所在位置。
create table bfile_tab (bfile_column BFILE);
create table t (blob_column BLOB);
----------------------------------------
declare
a_blob BLOB;
a_bfile BFILE := BFILENAME( 'UTLLOBDIR ', 'BLOB文件名 ');
begin
insert into bfile_tab values (a_bfile)
returning bfile_column into a_bfile;
insert into t values (empty_blob())
returning blob_column into a_blob;
dbms_lob.fileopen(a_bfile);
dbms_lob.loadfromfile(a_blob, a_bfile, dbms_lob.getlength(a_bfile));
dbms_lob.fileclose(a_bfile);
commit;
end;
/
--这样可以插入一个blob数据。
[解决办法]
學習...