【问题标题】:How do you update a SQL record with ORDSYS.ORDImage in a procedure如何在过程中使用 ORDSYS.ORDImage 更新 SQL 记录
【发布时间】:2016-12-27 15:30:06
【问题描述】:

我正在尝试创建一个过程,该过程将使用 ORDSYS.ORD 图像更新我的表中的列。我拥有的代码如下,当我尝试使用它时它一直告诉我错误。有人可以帮忙吗?谢谢

程序代码:

create or replace 
PROCEDURE Inserting_Images (REST_ID NUMBER, RESTImage ORDSYS.ORDImage) AS

  ctx RAW(64):=NULL;

BEGIN
  UPDATE restaurant_table
  Set RESTImage = RESTImage
  WHERE REST_id = REST_ID;


COMMIT;

  EXCEPTION
  WHEN others THEN 
    BEGIN
      ROLLBACK;
      dbms_output.put_line(sqlerrm);
    END;
--Error Handling.

END;
--Ends the procedure.

Using Procedure:
BEGIN
  inserting_images(52, 'YUSKIN.jpeg');
END;

【问题讨论】:

    标签: sql oracle stored-procedures plsql error-handling


    【解决方案1】:

    Inserting_Images 函数接受 ORDSYS.ORDImage 的参数,而您实际发送的是 VARCHAR,要获得所需的行为,您需要先初始化 ORDImage 对象,如下所示:

    CREATE OR REPLACE DIRECTORY FILE_DIR as '/mydir/work';
    GRANT READ ON DIRECTORY FILE_DIR TO 'user';
    inserting_images(52, ORDSYS.ORDImage.init('FILE', 'FILE_DIR','speaker.jpg'));
    

    (引自 docs.oracle.com)

    【讨论】:

    • 谢谢你,我真的很感激。当我现在运行代码时,它显示“匿名块已完成”,但字段值仍然显示为 NULL。
    • 确保将 '/mydir/work' 替换为包含文件的文件夹的实际路径,同时替换 'user' 为您的用户和 'speaker,jpg' 为您的文件名
    • 导入图片时,记录的ORDSYS.ORDImage属性全部为NULL。我不断收到一条错误消息,上面写着“22288. 00000 -”文件或 LOB 操作 %s 失败\n%s” *原因:对文件或 LOB 的操作尝试失败。”当我尝试创建缩略图时。你能帮忙吗?
    猜你喜欢
    • 2019-10-31
    • 2013-01-26
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多