一个简单的‘存储过程’问题

micro_e 2007-10-15 10:34:40

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
各位高手帮帮忙啊~实现功能就结贴!!!
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
micro_e 2007-10-15
  • 打赏
  • 举报
回复
用你的方法我改成

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 | | '] ';
kinglht 2007-10-15
  • 打赏
  • 举报
回复
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;
micro_e 2007-10-15
  • 打赏
  • 举报
回复
编号应该是count1 值,变化的,用上面quty 就是定值了~
刚学过程,表述失误,谅解
请大家继续。。。。
micro_e 2007-10-15
  • 打赏
  • 举报
回复
红色部分是‘paper_n[quty]’

paper_n 试卷名
[ 左括号
quty 试卷编号,同循环变量
] 右括号
micro_e 2007-10-15
  • 打赏
  • 举报
回复
搞明白了~原来是复制你写的||之间有空格,删掉就好了!
程序调通了!多谢咯!可能后面还有一些小问题,以后再问了!
:)结贴!
micro_e 2007-10-15
  • 打赏
  • 举报
回复
不会错啊!
英文状态下的shift+(等号右变的键啊)||||,前面还是复制你写的,应该不是这个错误啊!
kinglht 2007-10-15
  • 打赏
  • 举报
回复
v_exename:=paper_n | | '[ ' | |count1 | | '] ';

这个符号错了吧,应该是||

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧