Oracle SQL过程。这里有什么错误?

时间:2017-10-20 13:48:38

标签: oracle plsql oracle-apex

我在Oracle APEX中编写了一个PL / SQL过程,当我编译它时,我收到一个错误。 我不明白错误的原因是什么。在我看来,sintaxis是正确的。

这是一个截屏: https://i.imgur.com/UhfIMvh.png

这是代码:

create or replace PROCEDURE imageBLOBtoHTML(  v_MimeType IN VARCHAR2 (255) := null,
                                              v_Size IN NUMBER := null,
                                              v_file_name IN VARCHAR2 (2000) := null,
                                              imageBLOB IN NOCOPY BLOB  := null )
AS
BEGIN

       --Generates HTML
       OWA_UTIL.mime_header (NVL (v_MimeType , 'application/octet'), FALSE);
       htp.p('Content-length: ' || v_Size );
       htp.p('Content-Disposition:  filename="' || SUBSTR(v_file_name , INSTR(v_file_name , '/') + 1) || '"');
       owa_util.http_header_close;

       --Stops generation of HTML
       wpg_docload.download_file(imageBLOB);
END imageBLOBtoHTML;

这是错误:

Compilation failed,line 1 (13:39:25)
PLS-00103: Encountered the symbol "(" when expecting one of the following: := . ) , @ % default character

2 个答案:

答案 0 :(得分:2)

错误在线:

  imageBLOB IN NOCOPY BLOB  :=  null 

你需要改变它:

imageBLOB     IN OUT NOCOPY BLOB := ''

我想说:

CREATE OR REPLACE PROCEDURE imageBLOBtoHTML (
   v_MimeType    IN            VARCHAR2  := '',
   v_Size        IN            NUMBER := '',
   v_file_name   IN            VARCHAR2  := '',
   imageBLOB     IN OUT NOCOPY BLOB := '')

答案 1 :(得分:2)

将我的回答与XING的回答结合起来应该是这个:

create or replace PROCEDURE imageBLOBtoHTML( v_MimeType IN VARCHAR2 := null,
                                             v_Size IN NUMBER,
                                             v_file_name IN VARCHAR2,
                                             imageBLOB IN OUT NOCOPY BLOB)

允许其他参数为NULL(即默认设置为NULL)没有意义。