今天遇到一个问题是有关存储过程的!我现在有一个过程是已经实现了往表里插入数据!其中有一个BLOB字段!当我只插入一条记录的时候是可以的!但是我要实现的是循环插入多条记录!其过程代码如下:
CREATE OR REPLACE PROCEDURE pic_blob
(pfname VARCHAR2,
number_1 varchar2,
Version_2 varchar2,
PicNum_3 varchar2,
PictureSpe_5 varchar2)
IS
src_file BFILE;
dst_file BLOB;
lgh_file BINARY_INTEGER;
BEGIN
src_file := bfilename('BLOBDIR', pfname);INSERT INTO picture VALUES (number_1,Version_2,PicNum_3,EMPTY_BLOB(),PictureSpe_5)
RETURNING picture INTO dst_file;SELECT picture INTO dst_file FROM picture  WHERE number= number_1 and Version = Version_2 FOR UPDATE;dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
lgh_file := dbms_lob.getlength(src_file);
dbms_lob.loadfromfile(dst_file, src_file, lgh_file);UPDATE picture  SET picture = dst_file
WHERE number= number_1 and Version = Version_2;dbms_lob.fileclose(src_file);
commit;
END;
我在页面是这么写的:
try
{
for(int i=0; i<pictureCounts;i++)
{
p[i]=request.getParameter("p"+i);
p[i]=ch.getStr(p[i]);
String jb = ""+i;
String pathf = number+"\\"+number+Version+"\\"+"pic"+jb+".jpg";
procedure = "{call Pic_Blob (?,?,?,?,?) }";
cstmt = conn1.prepareCall(procedure);
cstmt.setString(1,pathf);
cstmt.setString(2,number);
cstmt.setString(3,Version);
cstmt.setString(4,jb);
cstmt.setString(5,p[i]);
cstmt.executeUpdate();

}

}catch(SQLException e)
{
out.println(e.getMessage());
return;
}
请高手指教!