最新做一个新的项目,用到了微软的Enterprise Library库,该库支持SQL和Oracle的统一访问,因此不能用SqlConnectionClient或OracleConnectionClient中自定义的数据类型,只能使用通用的DbType,但是其中的二进制内容只能容纳8K,这对于上传文件或者图片来说,肯定是不够用的,通过仔细研究Oracle的存储过程,自己写了一个无限上传二进制内容的存储过程:
create
or
replace
procedure
P_UpdatePhoto( v_img
in
blob, v_eraseFlag
in
varchar2
, v_employee_id
in
varchar2
)
is
v_locator_var blob;
v_amount
integer
:
=
0
;
begin
select
PHOTO
into
v_locator_var
from
employees
where
employee_id
=
v_employee_id
FOR
UPDATE
;
IF
( v_locator_var
IS
NULL
)
THEN
UPDATE
EMPLOYEES
SET
PHOTO
=
EMPTY_BLOB()
WHERE
EMPLOYEE_ID
=
v_employee_id;
select
PHOTO
into
v_locator_var
from
employees
where
employee_id
=
v_employee_id
FOR
UPDATE
;
END
IF
;
if
( v_locator_var
is
not
null
and
v_eraseFlag
=
'
1
'
)
then
v_amount :
=
DBMS_LOB.getlength( v_locator_var );
IF
( v_amount
!=
0
)
THEN
DBMS_LOB.erase( v_locator_var,v_amount,
1 <

使用Enterprise Library库在C#程序中调用Oracle存储过程,解决8K二进制内容限制,实现大文件上传。通过自定义存储过程,实现了无限上传二进制内容的功能。
最低0.47元/天 解锁文章
1987

被折叠的 条评论
为什么被折叠?



