/*1、声明游标*/ declare cursor CUR_SUB_FAULT is select SUB_FAULT_SHEET_ID, SHEET_STATUS from FB_J_SUB_FAULT_SHEET where SHEET_STREAM_NO=V_p_SHEET_STREAM_NO and SHEET_STATUS!=V_new_SUB_FAULT_SHEET_STATUS; begin /*2、打开游标*/ open CUR_SUB_FAULT; /*3、给第一行数据*/ fetch CUR_SUB_FAULT into V_SUB_FAULT_SHEET_ID, V_old_SUB_FAULT_SHEET_STATUS; /*4、测试是否有数据,并执行循环*/ While CUR_SUB_FAULT%found loop if V_new_SUB_FAULT_SHEET_STATUS!=V_old_SUB_FAULT_SHEET_STATUS then /* 将子故障状态置为与大单状态相同 */ update FB_J_SUB_FAULT_SHEET set SHEET_STATUS=V_new_SUB_FAULT_SHEET_STATUS where SUB_FAULT_SHEET_ID=V_SUB_FAULT_SHEET_ID and SHEET_STATUS!=V_new_SUB_FAULT_SHEET_STATUS ; /* 根据子故障变化修改小单状态 */ execute immediate 'call ATUO_CHG_SS_STA_BY_SFS(:V_p_SUB_FAULT_SHEET_ID,:V_p_old_SHEET_STATUS,:V_p_new_SHEET_STATUS)' using V_SUB_FAULT_SHEET_ID,V_old_SUB_FAULT_SHEET_STATUS,V_new_SUB_FAULT_SHEET_STATUS; end if; /*5、给下一行数据*/ fetch CUR_SUB_FAULT into V_SUB_FAULT_SHEET_ID, V_old_SUB_FAULT_SHEET_STATUS; /*6、关闭循环*/ end loop; /*7、关闭游标*/ close CUR_SUB_FAULT; end;