在过去的两天里,我有一个令我头疼的问题。我正在Oracle APEX 5中开发一个应用程序。问题是在一个页面上,我必须根据表中的一些数据手动生成HTML表单(不是通过APEX中提供的表单向导),但是当我提交表单时,在下一页上,我无法引用上一页填写的表单字段。这是我的页面区域代码,具有以下形式:
/ * PL / SQL动态区域的源代码* /
宣布
vc1 varchar2(107);
vc2 varchar2(35);
vc3 varchar2(35);
vc4 varchar2(35);
vc5 varchar2(35);
vc6 varchar2(35);
item_typ varchar2(50);
开始
htp.p ('<form name="page1_form" method="get" action="user_resp.php">');
htp.p ('<div style="font-size:x-small;">');
htp.p ('Email: <input type="text" id="v_email"> ');
htp.p ('<br/> <br/>');
select todayq,opt1,opt2,opt3,opt4,opt5,item_type
into vc1,vc2,vc3,vc4,vc5,vc6,item_typ
from todaysq
where dowk = to_number(to_char(sysdate,'D'));
htp.p ('<p id="vc1">' || vc1 || ' </p> <br/>');
IF upper(item_typ) IN ('RADIO','CHECKBOX') THEN
if vc2 is not null and vc2 != ' ' then
htp.p (' <input type="' || item_typ || '" name="ans1" value="1" id="vc2"> ' || vc2 || ' <br/> ');
end if;
if vc3 is not null and vc3 != ' ' then
htp.p (' <input type="' || item_typ || '" name="ans1" value="2" id="vc3"> ' || vc3 || ' <br/> ');
end if;
if vc4 is not null and vc4 != ' ' then
htp.p (' <input type="' || item_typ || '" name="ans1" value="4" id="vc4"> ' || vc4 || '<br/> ' );
end if;
if vc5 is not null and vc5 != ' ' then
htp.p (' <input type="' || item_typ || '" name="ans1" value="3" id="vc5"> ' || vc5 || '<br/> ');
end if;
htp.p ('<br/> <br/>');
ELSIF upper(item_typ) IN ('TEXT','PASSWORD','TEXTAREA') THEN
htp.p (' 1.<input type="' || item_typ || '" name="ans1" id="vc2" value="' || vc2 || '"> <br/> ');
htp.p (' 2.<input type="' || item_typ || '" name="ans2" id="vc3" value="' || vc3 || '"> <br/> ');
htp.p (' 3.<input type="' || item_typ || '" name="ans3" id="vc4" value="' || vc4 || '"> <br/> ' );
htp.p ('<br/> <br/>');
END IF;
htp.p ('<button type="submit"> Submit </button>');
htp.p ('</div>');
htp.p ('</form>');
例外
WHEN OTHERS THEN
htp.p('What is causing you to search for a new job? <br/> <br/>');
htp.p(' <input type="radio" name="ans1" value="1"> Current Salary <br/> ');
htp.p(' <input type="radio" name="ans1" value="2"> Location<br/> ');
htp.p(' <input type="radio" name="ans1" value="4"> Unhappy with Management<br/> ' );
htp.p(' <input type="radio" name="ans1" value="3"> Less Vacations<br/> <br/>');
htp.p('<button type="submit"> Submit </button>');
htp.p('</div>');
htp.p ('</form>');
结束;
(如果代码格式不正确,我很抱歉)。但这是问题....当我单击提交按钮时,我有一个PL / SQL进程,旨在将在先前表单上输入的值插入到表中:
/ *'页面处理'部分中的PL / SQL进程代码* /
开始
插入用户意见
(电子邮件,问题,答案)
values(:v_email,:vc1,:v2);
结束;
但是在结果中,我总是看到插入了一个包含所有空值的记录....这意味着表单字段值在“页面处理”部分中不可用于PL / SQL进程。
有人可以帮我讲述如何在会话状态中引用表单字段值,以便我们可以在PL / SQL中使用它们。
提前致谢。
使用下面的代码插入值:
begin
insert into user_opinions
(uemail,tquestion,uanswer)
values (:v_email, vc1, vc2) ;
end;