【求助】Oracle 数据库中 blob字段问题
winform做照片存储到Oracle中时遇到更新数据卡死的状况,如果不停止会直接报连接超时的错误,
如果强制停止可以看到该字段有值。但是该条数据一直被占用锁死。
图片大小都不大 ,只有2k-4k左右。且已经转换为byte型。
OracleParameter[] parameters = new OracleParameter[2];
parameters[0] = new OracleParameter("p_customersn", OracleDbType.Varchar2);
parameters[0].Value = customerSn;
parameters[1] = new OracleParameter("p_photo", OracleDbType.Blob, photo.Length);
parameters[1].Value = photo;
OracleHelper.ExecuteNonQuery(Program.connectionString, CommandType.StoredProcedure, "update_photp", parameters);
sql试过两种写法:
1、这种写法可以存进去,但是一直占用,无法停止。
PROCEDURE update_photp (p_customersn IN VARCHAR2, p_photo IN BLOB)
IS
BEGIN
--取出blob对象
UPDATE spe_customer
SET photo = p_photo
WHERE customer_sn = p_customersn;
END;
2、这种写法一个字也存不进去
PROCEDURE update_photp (p_customersn IN VARCHAR2, p_photo IN BLOB)
IS
lobloc BLOB;
query_str VARCHAR2 (1000);
BEGIN
--取出blob对象
UPDATE spe_customer
SET photo = EMPTY_BLOB ()
WHERE customer_sn = p_customersn;
query_str :=
'select photo from spe_customer where customer_sn= :id for update ';
EXECUTE IMMEDIATE query_str
INTO lobloc
USING p_customersn;
--更新
DBMS_LOB.WRITE (lobloc, UTL_RAW.LENGTH (p_photo), 1, p_photo);
--COMMIT;
END;
请问大家遇到过这种现象吗?
是什么原因导致的?是写法问题,还是数据库有什么问题?
谢谢了 很紧急!~ 非常感谢~~~
------解决方案--------------------
用PL SQL DEV工具可以更新进去>?
可以的话就是你的程序有问题,可能转换有问题,不行的话,看看报什么错误
------解决方案--------------------
没用过C#,参考一下:
1.http://lveyo.javaeye.com/blog/175727
2.http://blog.sina.com.cn/s/blog_4b9d73ad010008f2.html