oracle sql error: Inserting a picture in blob format

oracle sql error: Inserting a picture in blob format

我试着插入一张图片到下table:

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 传递,而是传递文件的实际字节 - 请参阅 Using PL/SQL how do you I get a file's contents in to a blob?

虽然,我(个人)敢说你的问题代码有正确的想法;我建议不要将您的图片存储在数据库中。将它们作为文件存储在文件系统中,然后使用数据库中的路径。它对各种各样的事情都很方便,比如能够单独备份、操作或替换它们,而且您不需要编写代码来通过网络为它们提供服务; Web 服务器已经知道如何从文件系统中提供文件,但是一旦将图片(或任何字节数据)放入数据库中,使用它就会变得更加困难,您必须编写将其提取出来的所有代码,然后放回去 - 这就是您真正能做的。通过将文件存储在您的关键任务数据库中,这意味着数据库现在必须在需要时投入资源来提取这些文件——实际上像图片这样的文件应该放在 CDN 上,并在将要使用的用户附近提供 them/the 将存储、缓存和服务它们的工作移交给专用于该任务的现有技术

ps;在 https://dba.stackexchange.com/questions/2445/should-binary-files-be-stored-in-the-database 中有很多合理的论点支持和反对 - 我个人的想法与 Tek 的

一致