我在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
答案 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)没有意义。