业务逻辑问题, 不妨在 for c_s in tbvoice loop if d_user_completed < d_user_sum then ------------------如果已经分配量小于该分配量则分配该录音 update ck_voice_table set who_do = v_s.user_id where voice_no = c_s.voice_no; d_user_completed := d_user_completed + c_s.voice_length; end if; end loop; 中加入一些打印语句看看,我感觉是程序的执行结果和楼主的预想结果不一致。
少了哪些数据,只能你自己加一下打印语句查一下了。 for c_s in tbvoice loop if d_user_completed < d_user_sum then ------------------如果已经分配量小于该分配量则分配该录音 update ck_voice_table set who_do = v_s.user_id where voice_no = c_s.voice_no; d_user_completed := d_user_completed + c_s.voice_length; end if; end loop; 体下建议 应该把loop放到if里,不然效率太低
没有的,贴错了。
不妨在
for c_s in tbvoice loop
if d_user_completed < d_user_sum then
------------------如果已经分配量小于该分配量则分配该录音
update ck_voice_table
set who_do = v_s.user_id
where voice_no = c_s.voice_no;
d_user_completed := d_user_completed + c_s.voice_length;
end if;
end loop; 中加入一些打印语句看看,我感觉是程序的执行结果和楼主的预想结果不一致。
for c_s in tbvoice loop
if d_user_completed < d_user_sum then
------------------如果已经分配量小于该分配量则分配该录音
update ck_voice_table
set who_do = v_s.user_id
where voice_no = c_s.voice_no;
d_user_completed := d_user_completed + c_s.voice_length;
end if;
end loop;
体下建议
应该把loop放到if里,不然效率太低