CREATE OR REPLACE PROCEDURE eygle_dump_blob (id varchar2) IS l_buffer RAW(32767); l_amount BINARY_INTEGER := 32767; l_blob BLOB; l_blob1 BLOB; l_blob_len INTEGER; BEGIN SELECT FJ INTO l_blob FROM A WHERE serial_no= id;--取出blob l_blob_len := DBMS_LOB.GETLENGTH(l_blob); --得到长度 select fj into l_blob1 from B where tsbzj=id for update;--得到B表该blob的写锁
这里怎么将取出来的blob写进去啊,我就这里没写过,不知道怎么写 COMMIT; END eygle_dump_blob;
CREATE OR REPLACE PROCEDURE eygle_dump_blob (id varchar2) IS l_blob BLOB; l_blob1 BLOB; vId integer;
BEGIN vId := 0; select count(serial_no) into vId from A where serial_no= id; if (vId!=0 and vId is not null) then --如果A表中存在相应的记录 SELECT FJ INTO l_blob FROM MT_APPEAL_RECORD WHERE serial_no= id;--从A表中取出BLOB update B set fj=empty_blob() where tsbzj=id;--更新B使FJ字段为一个空BLOB select fj into l_blob1 from B where tsbzj=id for update;--得到B表FJ写锁 DBMS_LOB.OPEN(l_blob,dbms_lob.lob_readonly);--打开l_blob,为只读状态 DBMS_LOB.OPEN(l_blob1,dbms_lob.lob_readwrite);--打开l_blob1,为可写状态 DBMS_LOB.append(l_blob1,l_blob);--将l_blob存到l_blob1中 DBMS_LOB.close(l_blob); --关闭l_blob DBMS_LOB.close(l_blob1); --关闭l_blob1 end if; COMMIT; END eygle_dump_blob;
如果,你不会SQL的还是好好学习一下.不熟悉JAVA的,还是先去学习有关JAVA存储过程的例子吧.
select BLOB FROM B
WHERE ID=(SELECT ID FROM A WHERE ID=...........)
楼主不是要存储过程的吗 虽然自己对存储过程不是很了解 但是也知道上面的不是一个存储过程的啊
IS
l_buffer RAW(32767);
l_amount BINARY_INTEGER := 32767;
l_blob BLOB;
l_blob1 BLOB;
l_blob_len INTEGER;
BEGIN
SELECT FJ INTO l_blob FROM A WHERE serial_no= id;--取出blob
l_blob_len := DBMS_LOB.GETLENGTH(l_blob); --得到长度
select fj into l_blob1 from B where tsbzj=id for update;--得到B表该blob的写锁
这里怎么将取出来的blob写进去啊,我就这里没写过,不知道怎么写 COMMIT;
END eygle_dump_blob;
IS
l_blob BLOB;
l_blob1 BLOB;
vId integer;
BEGIN
vId := 0;
select count(serial_no) into vId from A where serial_no= id;
if (vId!=0 and vId is not null) then --如果A表中存在相应的记录
SELECT FJ INTO l_blob FROM MT_APPEAL_RECORD WHERE serial_no= id;--从A表中取出BLOB
update B set fj=empty_blob() where tsbzj=id;--更新B使FJ字段为一个空BLOB
select fj into l_blob1 from B where tsbzj=id for update;--得到B表FJ写锁
DBMS_LOB.OPEN(l_blob,dbms_lob.lob_readonly);--打开l_blob,为只读状态
DBMS_LOB.OPEN(l_blob1,dbms_lob.lob_readwrite);--打开l_blob1,为可写状态
DBMS_LOB.append(l_blob1,l_blob);--将l_blob存到l_blob1中
DBMS_LOB.close(l_blob); --关闭l_blob
DBMS_LOB.close(l_blob1); --关闭l_blob1
end if;
COMMIT;
END eygle_dump_blob;