在oracle 11g中生成图像签名时出现“ FILEOPEN操作不存在的目录或文件”?

时间:2018-12-12 02:46:00

标签: oracle plsql

在“ c:\ work”中为媒体元素创建目录之后 我在sqlplus中声明了目录

> CREATE OR REPLACE DIRECTORY FILE_DIR as 'c:\work'; 
> GRANT READ ON DIRECTORY FILE_DIR TO anonymous;

我创建了一个类型user_type

TYPE user_type AS OBJECT (
  id                NUMBER,
  name              VARCHAR2(20),
  lastname          VARCHAR2(25),
  email             VARCHAR2(25),
  password          VARCHAR2(20),
  profile_pic       ORDSYS.ORDIMAGE,
  profile_pic_sig   ORDSYS.ORDImageSignature
)

,然后根据该类型创建表USERR。 插入数据符合预期

BEGIN
 INSERT INTO USERR
   VALUES (10,'user','username','somevalidemail','password', ORDSYS.ORDImage.init('FILE', 'C:\work','tess.jpg'),ORDSYS.ORDImageSignature.init());
 COMMIT;
END;
/
  

PL / SQL过程成功完成。

现在,当我尝试生成图像签名时出现问题

DECLARE
 t_image     ORDSYS.ORDImage;
 image_sig   ORDSYS.ORDImageSignature;
BEGIN
 SELECT Profile_PIC, Profile_PIC_SIG INTO t_image, image_sig 
  FROM USERR
  WHERE ID = 10 FOR UPDATE;
 image_sig.generateSignature(t_image);
 UPDATE USERR SET Profile_PIC_SIG = image_sig 
  WHERE ID =10;
END;
/

ERROR
ORA-22285: répertoire ou fichier inexistant pour l'opération FILEOPEN
ORA-06512: à "ORDSYS.ORDIMG_PKG", ligne 1074
ORA-06512: à "ORDSYS.ORDIMAGE", ligne 173
ORA-06512: à "ORDSYS.ORDIMAGESIGNATURE", ligne 85
ORA-06512: à ligne 8

我已经在这个问题上浪费了很多时间,但找不到任何解决方案。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

ORDSYS.ORDImage.init('FILE', 'FILE_DIR','tess.jpg')

您应该只为实际文件夹路径指定创建参考的oracle目录名称。