Oracle数据库如何正确用PL/SQL?

以下的文章主要介绍的是Oracle数据库如何正确用PL/SQL从相关数据库中来准确的读取BLOB字段的实际操作,其中包括如何正确的确认相关对象存在,以及如何创建存储Directory等相关内容介绍。

我们提供的服务有:成都网站建设、网站制作、微信公众号开发、网站优化、网站认证、昌都ssl等。为上千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的昌都网站制作公司

1.确认对象存在

 
 
 
  1. SQL> col fdesc for a30
  2. SQL> select fid,fname,fdesc from eygle_blob;
  3. FID FNAME FDESC

1 ShaoLin.jpg 少林寺-易经经

2 DaoYing.jpg 倒映

2.创建存储Directory

 
 
 
  1. SQL> connect / as sysdba
  2. Connected.
  3. SQL> create or replace directory BLOBDIR as 'D:\oradata\Pic';
  4. Directory created.
  5. SQL>
  6. SQL> grant read,write on directory BLOBDIR to eygle;
  7. Grant succeeded.
  8. SQL>

3.Oracle数据库用PL/SQL从数据库中读取BLOB字段的过程中我们需要创建存储过程

 
 
 
  1. SQL> connect eygle/eygle
  2. Connected.
  3. SQL>
  4. SQL> CREATE OR REPLACE PROCEDURE eygle_dump_blob (piname varchar2,poname varchar2) IS
  5. l_file UTL_FILE.FILE_TYPE;
  6. l_buffer RAW(32767);
  7. l_amount BINARY_INTEGER := 32767;
  8. l_pos INTEGER := 1;
  9. l_blob BLOB;
  10. l_blob_len INTEGER;
  11. BEGIN
  12. SELECT FPIC
  13. INTO l_blob
  14. FROM eygle_blob
  15. WHERE FNAME = piname;
  16. l_blob_len := DBMS_LOB.GETLENGTH(l_blob);
  17. l_file := UTL_FILE.FOPEN('BLOBDIR',poname,'wb', 32767);
  18. WHILE l_pos < l_blob_len LOOP
  19. DBMS_LOB.READ (l_blob, l_amount, l_pos, l_buffer);
  20. UTL_FILE.PUT_RAW(l_file, l_buffer, TRUE);
  21. l_pos := l_pos + l_amount;
  22. END LOOP;
  23. UTL_FILE.FCLOSE(l_file);
  24. EXCEPTION
  25. WHEN OTHERS THEN
  26. IF UTL_FILE.IS_OPEN(l_file) THEN
  27. UTL_FILE.FCLOSE(l_file);
  28. END IF;
  29. RAISE;
  30. 31 END;
  31. 32 /
  32. Procedure created.

4.取出字段数据

 
 
 
  1. SQL> host ls -l d:\oradata\Pic
  2. total 7618
  3. -rwxrwxrwa 1 gqgai None 2131553 Apr 19 10:12 DaoYing.jpg
  4. -rwxrwxrwa 1 gqgai None 1768198 Apr 19 10:12 ShaoLin.jpg
  5. SQL> exec eygle_dump_blob('ShaoLin.jpg','01.jpg')
  6. PL/SQL procedure successfully completed.
  7. SQL> host ls -l d:\oradata\Pic
  8. total 11072
  9. -rwxrwxrwa 1 Administrators SYSTEM 1768198 Apr 26 07:16 01.jpg
  10. -rwxrwxrwa 1 gqgai None 2131553 Apr 19 10:12 DaoYing.jpg
  11. -rwxrwxrwa 1 gqgai None 1768198 Apr 19 10:12 ShaoLin.jpg
  12. SQL>
  13. SQL> exec eygle_dump_blob('DaoYing.jpg','02.jpg')
  14. PL/SQL procedure successfully completed.
  15. SQL> host ls -l d:\oradata\Pic
  16. total 15236
  17. -rwxrwxrwa 1 Administrators SYSTEM 1768198 Apr 26 07:16 01.jpg
  18. -rwxrwxrwa 1 Administrators SYSTEM 2131553 Apr 26 07:19 02.jpg
  19. -rwxrwxrwa 1 gqgai None 2131553 Apr 19 10:12 DaoYing.jpg
  20. -rwxrwxrwa 1 gqgai None 1768198 Apr 19 10:12 ShaoLin.jpg

上述的相关内容就是对Oracle数据库用PL/SQL从数据库中读取BLOB字段的描述,希望会给你带来一些帮助在此方面。

网页题目:Oracle数据库如何正确用PL/SQL?
文章来源:http://www.shufengxianlan.com/qtweb/news31/555981.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联