这是我的表结构
create table questionnaire
(
qno int primary key,
ques varchar2(50),
option1 varchar2(10),
option2 varchar2(10),
option3 varchar2(10),
correct_ans varchar2(10)
);
create table user_ans
(
user_id int primary key,
ansq1 varchar2(15),
ansq2 varchar2(15),
ansq3 varchar2(15),
status varchar2(8),
marks number(3)
);
这是我的pl / sql代码。我正在尝试从问卷中提取并显示问题,提示用户提供答案,检查答案是否正确并相应地计算标记并更新我的表格。但是在显示问题之前,以下程序会提示用户输入。我正在使用oracle 9i。
declare
cursor q_cur is
select qno, ques, option1, option2, option3
from questionnaire
order by qno;
cursor eval is
select user_id, ansq1, ansq1, ansq3
from user_ans;
vq_rec q_cur%rowtype;
v_qno questionnaire.qno%type;
v_ques questionnaire.ques%type;
v_option1 questionnaire.option1%type;
v_option2 questionnaire.option2%type;
v_option3 questionnaire.option3%type;
v_ans varchar2(15);
v_userid user_ans.user_id%type;
v_ansq1 user_ans.ansq1%type;
v_ansq2 user_ans.ansq2%type;
v_ansq3 user_ans.ansq3%type;
begin
open q_cur;
loop
fetch q_cur into v_qno, v_ques, v_option1, v_option2, v_option3;
exit when q_cur%notfound;
dbms_output.put_line(
v_qno || '. ' || v_ques);
dbms_output.put_line(
'a. ' || v_option1 || ' ' ||
'b. ' || v_option2 || ' ' ||
'c. ' || v_option3);
end loop;
close q_cur;
open eval;
fetch eval into v_userid, v_ansq1, v_ansq2, v_ansq3;
insert into user_ans
(user_id, ansq1, ansq2, ansq3)
values
(&v_userid, '&v_ansq1', '&v_ansq2', '&v_ansq3');
close eval;
end;
答案 0 :(得分:0)
insert into user_ans(user_id, ansq1, ansq2, ansq3)
values(v_userid,v_ansq1, v_ansq, v_ansq3);
在尝试编译之前, &variable
被设置为宏值!所以他们一开始就被提示给你。
要在INSERT
中使用这些变量,只需使用名称。
编辑:如果您在PL / SQL中查找交互式 I / O,则无法实现!