2017-10-20 82 views
1

我在Oracle APEX中編寫了一個PL/SQL過程,當我編譯它時,出現錯誤。 我不明白錯誤的原因是什麼。它在我看來sintaxis是正確的。Oracle SQL過程。這裏有什麼錯誤?

這裏是一個屏幕捕獲: 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 
+1

只需使用'v_MimeType IN VARCHAR2:= null'即可,無需大小。 –

+0

我認爲':= null'沒用。當任何輸入參數爲NULL時,您的過程將不起作用。 –

+0

@ Wernfried Domscheit謝謝!它似乎工作,但現在它拒絕接受BLOB。如果你把它寫成答案,我將能夠標記它。 – bewe

回答

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設置爲默認值)沒有意義。

+0

謝謝!它現在編譯正確。 – bewe

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 := '') 
+0

謝謝!我希望我可以標記多個答案。有一個獎勵https://www.youtube.com/watch?v=kwsFy1EZupw – bewe

+3

@bewe Np .. Wernfried Domscheit是我的消息,所以獎勵他是同樣獎勵我。 – XING

+0

你令我失望,'...... IN VARCHAR2(xxx)'不起作用。 –