【发布时间】:2014-02-06 22:43:54
【问题描述】:
我需要在排序后更新数据集,在 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 语句对我不起作用。
所以这应该对数据集进行排序,然后将第一行 v_in_source_batch_size 更新为 1,第二个 v_in_source_batch_size 行更新为 2,依此类推。
我怎样才能达到这个结果?使用游标是唯一的方法吗?如果是这样,我怎样才能使光标动态?
【问题讨论】:
-
您可以将其作为 PLSQL 中的游标循环并一次发出一个更新。
-
如何为这种情况动态创建游标?
标签: oracle sorting oracle11g sql-update sql-order-by