我收到此错误:
错误:SyntaxError:JSON.parse错误:位置无效的字符:1
在提交页面中执行oracle apex5.2
中的以下代码,
以下代码用于使用pl/sql
中的oracle apex
下载文件。
我创建了一个按钮;当我们点击该按钮时,下面的代码将会执行并且提交页面也会发生。
Declare
dest_loc11 BLOB := empty_blob();
dest_loc BLOB := empty_blob();
dest_loc2 BLOB := empty_blob();
dest_loc3 BLOB := empty_blob();
dest_loc4 BLOB := empty_blob();
dest_loc5 BLOB := empty_blob();
dest_loc6 BLOB := empty_blob();
src_loc BLOB := empty_blob();
l_zip_file blob;
v_length integer;
v_inp varchar2(32767);
v_count number;
n number:=1;
v_pr1_idx number;
v_pr1_idx2 number;
V_ID NUMBER;
v_pr_1 varchar2(32767):='130614';
V_RES VARCHAR2(32767);
V_PRINT VARCHAR2(32767):='';
V_PROMPT VARCHAR2(32767);
V_PRINT_RAW BLOB;
csv_file utl_file.file_type;
V_NO_DATA varchar2(32767);
v_pr_11 varchar2(32767);
BEGIN
DBMS_LOB.CREATETEMPORARY(
lob_loc => dest_loc11,
cache => true,
dur => dbms_lob.session
);
DBMS_LOB.OPEN(dest_loc11, DBMS_LOB.LOB_READWRITE);
V_PRINT:='udfhsdhgfszhduhjsdzvcjhzxjcvhzxc';
V_PRINT_RAW := utl_raw.cast_to_raw( V_PRINT );
v_length := dbms_lob.getlength(V_PRINT_RAW);
DBMS_LOB.WRITEAPPEND (
lob_loc => dest_loc11,
amount => v_length,
buffer => V_PRINT_RAW);
DBMS_LOB.CLOSE(dest_loc11);
sys.htp.init;
sys.owa_util.mime_header( 'text/plain', FALSE );
sys.htp.p('Content-length: ' || sys.dbms_lob.getlength( dest_loc11));
sys.htp.p('Content-Disposition: attachment; filename="' ||'bala.sql' || '"' );
sys.htp.p('Cache-Control: max-age=3600');-- tell the browser to cache for one hour, adjust as necessary
sys.owa_util.http_header_close;
sys.wpg_docload.download_file( dest_loc11);
DBMS_LOB.FREETEMPORARY (dest_loc11);
apex_application.stop_apex_engine;
end;
答案 0 :(得分:0)
听起来你有一个PL / SQL动态动作,当单击按钮时会触发,然后下载你的文件?不,你不能通过Ajax下载文件。
Download a file by jQuery.Ajax
您需要做的是将用户重定向到其他页面,或者使用不同的REQUEST
值返回当前页面,这样您就知道您应该下载该文件。然后,将您的代码放在该页面上的Before Header过程中。
答案 1 :(得分:0)
您需要在页面设计器的页面级别将Reload on Submit
设置为Always
。然后,您可以成功下载该文件。当Value error
小于1时,您的代码也有可能提升v_length
。当v_length
超出限制1-32767