Oracle如何使用ORDER BY进行更新

Oracle如何使用ORDER BY进行更新,oracle,sorting,oracle11g,sql-update,sql-order-by,Oracle,Sorting,Oracle11g,Sql Update,Sql Order By,我需要在对数据集进行排序后以pl/sql的形式更新数据集。下面是动态SQL v_dyn_sql:= 'UPDATE '||v_in_schema||'.'||v_in_skinny_table||' SET BATCH=CEIL(ROWNUM/'||v_in_source_batch_size||') WHERE RECORD_STATUS IN '||v_i

我需要在对数据集进行排序后以pl/sql的形式更新数据集。下面是动态SQL

    v_dyn_sql:= 'UPDATE '||v_in_schema||'.'||v_in_skinny_table||'
                    SET BATCH=CEIL(ROWNUM/'||v_in_source_batch_size||') 
                    WHERE
                        RECORD_STATUS IN '||v_in_mode||'
                    AND 
                        LEGACY_SYSTEM_ID__C in (SELECT LEGACY_SYSTEM_ID__C
                                          FROM '||v_in_schema||'.'||v_in_wide_table||'
                                          ORDER BY '||v_in_sort_criteria)
***Id不是唯一的,因此MERGE语句对我无效

因此,这应该对数据集进行排序,然后用1更新第一个v_in_source_batch_大小行,用2更新第二个v_in_source_batch_大小行,依此类推

我怎样才能达到这个结果?使用光标是唯一的方法吗?如果是,如何使光标动态

begin
  for i in (select * from <table>
            order by col1) loop
    update <table> set <col>=<col_value> where <col>=i.<col_pk>;
  end loop;
end;  

尝试类似的方法-您可以使用where current of访问游标中的当前行,如果愿意,可以省略更新的where子句部分

您可以在PLSQL中将其作为游标循环,并一次发布一个更新。如何为这种情况动态创建游标?应指示select*from子句将需要申请订单,以满足要求。