create or replace procedure pro_passexe1
(
  stander_n in varchar2,--标准号
  paper_n in varchar2,--试卷名称
  paper_t in number,--考试时间
  quty in number,--生成试卷的数量

is
begin
  for count1 in 1..quty
  loop
      if quty>1 then
         insert into exe (std_id, exename,exe_time) values (stander_n,paper_n[quty],paper_t);
         --红色部分是我想要的结果:试卷名称加上编号,形成一个新的字符串添加到表中,不知道怎么定义临时变量,把组合的新字符串保存
      else
         insert into exe (std_id, exename,exe_time) values (stander_n,paper_n,paper_t);
      end if;
  end loop;
end pro_passexe1;比如产生3份试卷走if路
                            aaa 数学其中考试卷[1] 120 
                            aaa 数学其中考试卷[2] 120
                         aaa 数学其中考试卷[3] 120
若产生一份试卷走else路
                            bbb 语文期末考试卷 150
各位高手帮帮忙啊~实现功能就结贴!!!

解决方案 »

  1.   

    红色部分是‘paper_n[quty]’paper_n 试卷名
    [       左括号
    quty    试卷编号,同循环变量
    ]       右括号
      

  2.   

    编号应该是count1 值,变化的,用上面quty 就是定值了~ 
    刚学过程,表述失误,谅解
    请大家继续。
      

  3.   

    create or replace procedure pro_passexe1
    (
      stander_n in varchar2,--标准号
      paper_n in varchar2,--试卷名称
      paper_t in number,--考试时间
      quty in number,--生成试卷的数量

    is
      v_exename varchar2(100);--临时变量
    begin
      for count1 in 1..quty
      loop
          if quty>1 then
             v_exename:=paper_n||'['||stander_n||']';
          else
             v_exename:=paper_n
          end if;
             insert into exe (std_id, exename,exe_time) values (stander_n,paper_n,paper_t);  end loop;
    end pro_passexe1;
      

  4.   

    用你的方法我改成create or replace procedure pro_passexe1
    (
      stander_n in varchar2,--标准号
      paper_n in varchar2,--试卷名称
      paper_t in number,--考试时间
      quty in number--生成试卷的数量

    is
    v_exename varchar2(100);--临时变量 begin
      for count1 in 1..quty
      loop
          if quty>1 then
             v_exename:=paper_n | | '[ ' | |count1 | | '] '; --你的方法是想让字符串联合,可是编译的时候要报错啊!就这一句错!
             insert into exe (std_id, exename,exe_time) values (stander_n,v_exename,paper_t);
              v_exename:=paper_n
          else
             insert into exe (std_id, exename,exe_time) values (stander_n,paper_n,paper_t);
          end if;
      end loop;
    end pro_passexe1;PROCEDURE ABCD.PRO_PASSEXE1 编译错误错误: PLS-00103: 出现符号 "|"在需要下列之一时:
            . ( * @ % & = - + ; < / > at
              in is mod remainder not rem <an exponent (**)> <> or != or ~=
              >= <= <> and or like LIKE2_ LIKE4_ LIKEC_ between || multiset
              member SUBMULTISET_
    行: 20
    文本: v_exename:=paper_n | | '[ ' | |count1 | | '] ';
      

  5.   

     v_exename:=paper_n | | '[ ' | |count1 | | '] ';这个符号错了吧,应该是||
      

  6.   

    不会错啊!
    英文状态下的shift+(等号右变的键啊)||||,前面还是复制你写的,应该不是这个错误啊!