最新做一个新的项目,用到了微软的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 : =
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 : =