1 package body jvmrjbc as
2 function init return VARCHAR2 as
3 sessid VARCHAR2(100);
4 begin
5 loop
6 begin
7 sessid := dbms_pipe.unique_session_name||dbms_crypto.randombytes(35);
8 insert into java$jvm$rjbc values (sessid, null, empty_blob);
9 commit;
10 return sessid;
11 exception when others then
12 if sqlcode not in (-1) then raise; end if;
13 end;
14 end loop;
15 end;
16
17 procedure putpath(sessid VARCHAR2, pathname VARCHAR2) as
18 begin
19 update java$jvm$rjbc set path=pathname where id=sessid;
20 commit;
21 end;
22
23 function getlob(sessid VARCHAR2) return BLOB as
24 lob BLOB;
25 begin
26 select lob into lob from java$jvm$rjbc where id=sessid;
27 return lob;
28 end;
29
30 function getpath(sessid VARCHAR2) return VARCHAR2 as
31 p VARCHAR2(4000);
32 begin
33 select path into p from java$jvm$rjbc where id=sessid;
34 return p;
35 end;
36
37 procedure putlob(sessid VARCHAR2, l BLOB) as
38 tl BLOB;
39 begin
40 select lob into tl from java$jvm$rjbc where id=sessid for update;
41 dbms_lob.trim(tl, 0);
42 dbms_lob.append(tl, l);
43 commit;
44 end;
45
46 procedure done(sessid VARCHAR2) as
47 begin
48 delete from java$jvm$rjbc where id=sessid;
49 commit;
50 end;
51
52 end jvmrjbc;