Oracle Insert BLOB

Oracle Insert BLOB来源于:http://arjudba.blogspot.com/2008/06/how-to-insert-blob-dataimage-video-into.htmlHowtoInsertBlobdata(image,video)intooracleBLOBsizeInthispostitisshownhowIcaninsertBlob

大家好,又见面了,我是你们的朋友全栈君。

来源于:

http://arjudba.blogspot.com/2008/06/how-to-insert-blob-dataimage-video-into.html

How to Insert Blobdata(image, video) intooracle BLOB size

In this post it is shown how I can insert Blob data link image video into oracle database and also how I can determine the size of the BLOB data from oracle.

1)Create Directory Where BLOB resides.


create or replace directory temp as ‘/oradata2’;

2)Grant read permission to the user who work with this directory.


grant read on directory temp to arju;

3)Create the
Table which holds lob object.

— the storage table for the image file

CREATE TABLE pdm (

dname VARCHAR2(30), — directory name

sname VARCHAR2(30), — subdirectory name

fname VARCHAR2(30), — file name

iblob BLOB); — image file

4)Create the procedure that insert BLOB objects.



— create the procedure to load the file
CREATE OR REPLACE PROCEDURE load_file (
pdname VARCHAR2,
psname VARCHAR2,
pfname VARCHAR2) IS

src_file BFILE;
dst_file BLOB;
lgh_file BINARY_INTEGER;
BEGIN
src_file := bfilename(‘TEMP’, pfname);

— insert a NULL record to lock
INSERT INTO pdm
(dname, sname, fname, iblob)
VALUES
(pdname, psname, pfname, EMPTY_BLOB())
RETURNING iblob INTO dst_file;

— lock record
SELECT iblob
INTO dst_file
FROM pdm
WHERE dname = pdname
AND sname = psname
AND fname = pfname
FOR UPDATE;

— open the file
dbms_lob.fileopen(src_file, dbms_lob.file_readonly);

— determine length
lgh_file := dbms_lob.getlength(src_file);

— read the file
dbms_lob.loadfromfile(dst_file, src_file, lgh_file);

— update the blob field
UPDATE pdm
SET iblob = dst_file
WHERE dname = pdname
AND sname = psname
AND fname = pfname;

— close file
dbms_lob.fileclose(src_file);
END load_file;
/

5)Execute the Procedure.



SQL> exec load_file(‘TEMP’,’This is Image’,’tritha7.png’);


PL/SQL procedure successfully completed.

6) From OS see the BLOB size.



SQL> !ls -l /oradata2/tritha7.png


-rwxr-xr-x 1 oracle oinstall 21150 Jun 9 01:55 /oradata2/tritha7.png

7)From Oracle Determine Blob size.


1 declare
2 a blob;
3 begin
4 select iblob into a from pdm;
5 dbms_output.put_line(dbms_lob.getlength(a));
6* end;


SQL> /

PL/SQL procedure successfully completed.



SQL> set serverout on


SQL> /

21150

 

最近遇到好多需要存储Oracle BLOB 需求。 众所周知,BLOB 是用来存储图片、PDF、等大数据对象的。由于公司的需要我们所有的数据库操作都要使用存储过程来操作。所以首先先贴上一个BLOB存储的存储过程供大家参考:

Sql代码

  1. create or replace  
  2. procedure NDSSP_backup_fund (fund_id_in in varchar2 ,selector_in in varchar2,   
  3. time_in in timestamp,blob_in in BLOB)    
  4.   is  
  5.     key number;   
  6.     blob_tmp blob;   
  7.   begin  
  8.     delete from fund_backup bf where bf.selector = selector_in and bf.fund_id = fund_id_in;   
  9.     select fund_backup_seq.nextval into key from dual;   
  10.     insert into fund_backup values(key,selector_in,fund_id_in,empty_blob(),time_in);   
  11.     select content into  blob_tmp from fund_backup where id = key for update;   
  12.     dbms_lob.copy(blob_tmp, blob_in, dbms_lob.getLength(blob_in));   
  13.   end NDSSP_backup_fund;  
大家只要关注BLOB存储的部分就好了,其他的部分都可以忽略。正如大家所看到的,我们想要调用这个存储过程,必须要传递一个BLOB 对象。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160961.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基础篇:Linux 常用命令总结「建议收藏」

    基础篇:Linux 常用命令总结「建议收藏」熬夜爆肝Linux集合,还不收藏?

    2022年5月28日
  • 卡尔曼滤波 — 从推导到应用(一)「建议收藏」

    卡尔曼滤波 — 从推导到应用(一)「建议收藏」前言卡尔曼滤波器是在估计线性系统状态的过程中,以最小均方差为目的而推导出的几个递推数学等式,也可以从贝叶斯推断的角度来推导。本文将分为两部分:第一部分,结合例子,从最小均方差的角度,直观地介绍卡尔曼滤波的原理,并给出较为详细的数学推导。第二部分,通过两个例子给出卡尔曼滤波的实际应用。其中将详细介绍一个匀加速模型,并直观的对比系统状态模型的建立对滤波的影响。

    2022年6月17日
  • webservice技术介绍

    一、WebService到底是什么?   一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。   所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。    所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台

    2022年4月5日
  • Bash Export命令「建议收藏」

    Bash Export命令「建议收藏」一.shell和export《1》用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,脚本shell将终止,返回…

    2022年9月7日
  • slic超像素分割算法_hdr算法

    slic超像素分割算法_hdr算法原文出自:https://blog.csdn.net/Fighting_Dreamer/article/details/77170859SLIC与目前最优超像素算法的比较RadhakrishnaAchanta,AppuShaji,KevinSmith,AurelienLucchi,PascalFua,andSabineS¨usstrunk摘要近年来,计算机视觉应用越来越依赖…

    2022年10月28日
  • Workbench中直接调用ICEM CFD进行网格划分「建议收藏」

    Workbench中直接调用ICEM CFD进行网格划分「建议收藏」Workbench中直接调用ICEMCFD进行网格划分自从ANSYS12.0之后,ICEMCFD就从Workbench中被分离出去,作为一个独立的程序使用了。取而代之的是Meshing模块。在Meshing的属性节点菜单中右键点击Mesh,选择Insert>Method,插入方法。选择需要划分网格的几何体,点击apply。此时Geometry显示为1Body。设置Method为MultiZone,如果不设置成这个的话,找不到进入ICEMCFD的入口。如果要划分四面体,

    2022年5月9日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号