oracle sql错误:插入blob格式的图片

uklbhaso  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(438)

我试图在下一张表中插入一张图片:

  1. create table Picture
  2. (
  3. pic BLOB,
  4. title varchar2(30),
  5. descript varchar2(200),
  6. tags varchar2(100),
  7. date_created varchar2(100),
  8. actualdate date
  9. );

我有一张照片和5个varchar2参数。下面是我要插入的步骤:

  1. create or replace procedure addKep (pic BLOB, title varchar2,descript varchar2, tags varchar2 , date_created varchar2, hiba out varchar2)
  2. is
  3. my_date date;
  4. v_blob BLOB;
  5. begin
  6. --get actual date
  7. SELECT TO_date
  8. (SYSDATE, 'YYYY/MM/DD HH:MI:SS')into my_date
  9. FROM DUAL;
  10. INSERT INTO Picture (pic)
  11. VALUES (empty_blob());
  12. insert into Picture Values(pic,title,descript,tags,date_created,my_date);
  13. --hiba:='Sikeres!';
  14. commit;
  15. end;

在我尝试测试我的程序之后:

  1. declare
  2. something varchar2(20);
  3. BEGIN
  4. addKep('c:\xampp\htdocs\php_web\_projekt\pic\akosfeladatok.jpg','Title','Description','tags','2020-06-15',something);
  5. END;

但我会得到下一个错误:

  1. PLS-00306: wrong number or types of arguments in call to 'ADDKEP'

但是,我有相同的参数列表
谢谢你的帮助

u7up0aaq

u7up0aaq1#

您不会将路径作为blob传递给文件,而是传递文件的实际字节—请参阅使用pl/sql如何将文件的内容传入blob?
不过,我(个人)敢说你的问题代码有正确的想法;我建议不要把你的照片存储在你的数据库里。将它们作为文件存储在文件系统中,然后使用数据库中的路径。它对于各种各样的事情都很方便,比如能够单独备份、操作或替换它们,并且您不需要编写代码来通过web为它们提供服务;web服务器已经知道如何从文件系统中提供文件,但是一旦你将图片(或任何字节的数据)放入数据库,处理起来就变得更加困难,你必须编写所有的代码,将其取出,然后再放回去,而这正是你所能做的。通过将文件存储在任务关键型数据库中,意味着数据库现在必须投入资源,以便在需要时随时提取这些文件—实际上,像图片这样的文件应该放在cdn上,并在将使用它们/存储工作的用户附近提供,缓存和服务将被移交给专门用于该任务的现有技术
聚苯乙烯;有很多合理的论据支持和反对https://dba.stackexchange.com/questions/2445/should-binary-files-be-stored-in-the-database -我个人的想法和泰克的一致

相关问题