oracle 存储过程 for (多个循环语句调用)

本文提供了一段PL/SQL过程代码,用于查找并处理数据库中选课、缴费记录及成绩表里的重复数据。通过定义游标遍历这些表,可以找出具有重复记录的学生ID和课程ID组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上找了很多代码都是有问题的,所以自己记下自己写的代码,用于下次要用的时候直接复制过来调用,大家如果要用的话可以把模板拷贝过去,然后修改具体里面的细节


create or replace procedure deleteRepeatChoiceCourseData

as
 user_id varchar2(100);
 seme_course_id varchar2(100);
  /************选课的游标************/
 cursor choiceCourseCursor is
        select user_id,seme_cour_id from t_teach_choice_course
        group by user_id,seme_cour_id having count(1) >1;
        
 /*********缴费的游标********/
 cursor fiPaymentRecordCursor is
       select charge_item_id,student_id,course_seme_id from t_fi_payment_record
       group by charge_item_id,student_id,course_seme_id having count(1) > 1;
 /**********成绩的游标***************/
 cursor resultCursor is
      select user_id,seme_cour_id from t_teach_result
      group by user_id,seme_cour_id having count(1) >1;
begin
   /*****************循环执行选课表t_teach_choice_course 的重复数据start *********/
   dbms_output.put_line('************delete t_teach_choice_course data start***********');
   for choiceCourseTemp in choiceCourseCursor loop
      dbms_output.put_line(choiceCourseTemp.user_id||'**'||choiceCourseTemp.seme_cour_id);
   end loop;
   dbms_output.put_line('************delete t_teach_choice_course data start***********');
 
  /*****************循环执行缴费表 t_fi_payment_record 的重复数据start *********/
   dbms_output.put_line('************delete t_fi_payment_record data start***********');
   for fiPaymentRecordTemp in fiPaymentRecordCursor loop
       dbms_output.put_line(fiPaymentRecordTemp.student_id||'**'||fiPaymentRecordTemp.course_seme_id);
   end loop;
   dbms_output.put_line('************delete t_fi_payment_record data start***********');
 /*****************循环执行缴费表 t_fi_payment_record 的重复数据end***********/

 /*****************循环执行成绩表 t_teach_result 里面的重复数据start *********/
  dbms_output.put_line('************delete t_teach_results data start***********');
   for resultTemp in resultCursor loop
       dbms_output.put_line(resultCursor.user_id||'**'||resultCursor.seme_cour_id);
   end loop;
    dbms_output.put_line('************delete t_teach_results data start***********');
 /*****************循环执行成绩表 t_teach_results 里面的重复数据end***********/
 
end deleteRepeatChoiceCourseData;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值