oracle 循环

来源:百度知道 编辑:UC知道 时间:2024/06/19 00:17:50
跪求高手 if判断只能判断第一条记录是否相等 如何循环判断所有级记录呢
begin
for a in(select avalue from test2)
loop
if(a.avalue=:new.avalue)
then
exit ;
else
insert into test2(name,avalue) values('awea',:new.avalue);
end if ;
exit;
end loop;
end;
小弟执行两位老兄的语句 还是不行
关键问题还是 if只判断了一次 比如判断两表第一行数据后 如果不相等 就执行else语句
很无奈
3楼大哥的更费解了for a.avalue in...... 执行不过去啊
a就是存放select avalue from test2 出来的临时变量啊
有没有括号都一样

你表述错了 相同插入,不同就执行空语句
begin
for a in(select avalue from test2)
loop
if a.avalue=:new.avalue
then
insert into test2(name,avalue) values('awea',:new.avalue);
else
null;
end if ;
end loop;
end;

begin
for a in(select avalue from test2)
loop
if(a.avalue=:new.avalue)
then
null ;
else
insert into test2(name,avalue) values('awea',:new.avalue);
end if ;
exit;
end loop;
end;

这代码本来就错了,害我看了半天。
你是不是想实现a的值要是在test2表里没有的话就插入啊 ?
两个错,
第一个 倒数第三行,exit是多余的。
第二个, for a in (select avalue from test2)和for a.avalue in (select avalue from test2)的 区别 ,搞清楚就可以了。。。

a是什么东西啊?