1. 准备工作

  • Oracle数据库已安装并正常运行。
  • 您拥有足够的权限来创建表、目录和存储过程。
  • 您了解如何使用SQL语言进行数据库操作。

2. 创建存储图片的表

CREATE TABLE ImageTable (
    ImageID NUMBER PRIMARY KEY,
    ImageData BLOB
);

3. 创建存储图片的目录

CREATE OR REPLACE DIRECTORY ImageDirectory AS '/path/to/image/directory';

请将/path/to/image/directory 替换为您实际想要创建的目录路径。

4. 创建存储过程

CREATE OR REPLACE PROCEDURE InsertImage(
    p_ImageID IN NUMBER,
    p_ImagePath IN VARCHAR2
) AS
    v_Blob BLOB;
    v_File BFILE;
BEGIN
    -- 创建BLOB类型变量
    v_Blob := EMPTY_BLOB();
    
    -- 打开BFILE
    v_File := BFILENAME('ImageDirectory', p_ImagePath);
    
    -- 将文件内容加载到BLOB变量中
    DBMS_LOB.OPEN(v_Blob, DBMS_LOB.LOB_READWRITE);
    DBMS_LOB.LoadFromFile(v_Blob, v_File, DBMS_LOB.GETLENGTH(v_Blob));
    DBMS_LOB.CLOSE(v_Blob);
    
    -- 插入数据到ImageTable
    INSERT INTO ImageTable (ImageID, ImageData) VALUES (p_ImageID, v_Blob);
    COMMIT;
END InsertImage;
/

5. 调用存储过程插入图片

EXEC InsertImage(1, 'image_path.jpg');

6. 总结