oracle sql错误:插入blob格式的图片
Posted
技术标签:
【中文标题】oracle sql错误:插入blob格式的图片【英文标题】:oracle sql error: Inserting a picture in blob format 【发布时间】:2020-10-04 14:37:27 【问题描述】:我尝试在下一张表中插入图片:
create table Picture
(
pic BLOB,
title varchar2(30),
descript varchar2(200),
tags varchar2(100),
date_created varchar2(100),
actualdate date
);
我有一张图片和 5 个 varchar2 参数。这是我要插入的过程:
create or replace procedure addKep (pic BLOB, title varchar2,descript varchar2, tags varchar2 , date_created varchar2, hiba out varchar2)
is
my_date date;
v_blob BLOB;
begin
--get actual date
SELECT TO_date
(SYSDATE, 'YYYY/MM/DD HH:MI:SS')into my_date
FROM DUAL;
INSERT INTO Picture (pic)
VALUES (empty_blob());
insert into Picture Values(pic,title,descript,tags,date_created,my_date);
--hiba:='Sikeres!';
commit;
end;
在我尝试测试我的程序后:
declare
something varchar2(20);
BEGIN
addKep('c:\xampp\htdocs\php_web\_projekt\pic\akosfeladatok.jpg','Title','Description','tags','2020-06-15',something);
END;
但我会得到下一个错误:
PLS-00306: wrong number or types of arguments in call to 'ADDKEP'
但是,我有相同的参数列表
感谢您的帮助
【问题讨论】:
您不会将文件路径作为 BLOB 传递,而是传递文件的实际字节 - ***.com/questions/122909/… - 注意c:\xampp\htdocs\php_web\_projekt\pic
应该是服务器上的路径,而不是本地机器上的路径(除非您的本地机器是服务器..)
您的参数“pic”包含文件的路径,而不是文件。你不能加载这样的文件。这有帮助吗? blogs.oracle.com/searchtech/…
【参考方案1】:
您不会将文件路径作为 BLOB 传递,而是传递文件的实际字节 - 请参阅 Using PL/SQL how do you I get a file's contents in to a blob?
不过,我(个人)敢说你有问题的代码有正确的想法;我建议不要将您的图片存储在数据库中。将它们作为文件存储在文件系统中,然后使用数据库中的路径。它对各种事情都很方便,例如能够单独备份、操作或替换它们,并且您无需编写代码即可通过网络为它们提供服务; Web 服务器已经知道如何从文件系统中提供文件,但是一旦您将图片(或任何字节数据)放入数据库中,使用起来就会变得更加困难,您必须编写将其拉出的所有代码,然后放回去 - 这就是你能做的。通过将文件存储在您的任务关键型数据库中,这意味着数据库现在必须在需要时随时将资源用于提取这些文件 - 实际上,像图片这样的文件应该放在 CDN 上,并在将要使用它们的用户附近提供/存储、缓存和服务它们的工作交给了现有的专门用于该任务的技术
ps;在https://dba.stackexchange.com/questions/2445/should-binary-files-be-stored-in-the-database 中有很多支持和反对的合理论据 - 我个人的想法与 Tek 一致
【讨论】:
以上是关于oracle sql错误:插入blob格式的图片的主要内容,如果未能解决你的问题,请参考以下文章