我正在尝试创建一个过程,该过程将使用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;

最佳答案

函数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)

07-24 13:18