C#在Oracle中存储图片的问题

C#在Oracle中存储图片,需要先将图片转化为byte[],在转化为OracleLob对象,最后传入存储过程中。

图片的流转化参见下文:

【转】http://www.cnblogs.com/noahsky/archive/2010/01/28/1658379.html

 

公司的存储过程:

 1 PROCEDURE sp_ins_fwpmt (
 2       ib_tp         IN       BLOB := NULL,
 3       is_lzid       IN       VARCHAR2,
 4       is_flmc       IN       VARCHAR2,
 5       os_pmtbh      OUT      VARCHAR2,
 6       os_return     OUT      INTEGER,
 7       os_errorinf   OUT      VARCHAR2
 8    )
 9    AS
10       oc_cursor    t_cursor;
11       bufferblob   BLOB;
12       s_pmtbh      VARCHAR2 (10);
13       v_bufferblob blob;
14    BEGIN
15       --初始化
16       os_return := -1;
17       os_errorinf := '';
18       --获取新的图片编号
19       sp_get_tpbh (s_pmtbh, os_return, os_errorinf);
20 
21       IF os_return = -1
22       THEN
23          os_errorinf := '获取图片编号错误' || os_errorinf;
24          RETURN;
25       END IF;
26 
27       os_return := -1;
28 
29       INSERT INTO yw_fwpmt
30                   (tpbh, lzid, tpflmc, fwpmt, xgsj
31                   )
32            VALUES (s_pmtbh, is_lzid, is_flmc, EMPTY_BLOB (), SYSDATE
33                   );
34 
35       SELECT     fwpmt
36             INTO bufferblob
37             FROM yw_fwpmt
38            WHERE tpbh = s_pmtbh
39       FOR UPDATE;
40 
41       DBMS_LOB.COPY (bufferblob, ib_tp, DBMS_LOB.getlength (ib_tp));
42       
43       if ib_tp is not null then
44          v_bufferblob := ib_tp;
45          DBMS_LOB.freetemporary(v_bufferblob);
46       end if;      
47       
48       COMMIT;
49       os_pmtbh := s_pmtbh;
50       os_return := 0;
51       
52    EXCEPTION
53       WHEN OTHERS
54       THEN
55          ROLLBACK;
56          os_return := -1;
57          os_errorinf := '原因:' || SQLERRM;
58    END sp_ins_fwpmt;
公司插入图片的过程

我不太明白为什么要这样处理,先创建空对象再赋值,难道不用直接插入么?

转载于:https://www.cnblogs.com/lionmufasa/p/3285159.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值