pl / sql程序输出顺序错误

时间:2014-10-16 08:47:08

标签: oracle plsql prompt

这是我的表结构

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;

1 个答案:

答案 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,则无法实现!