【发布时间】:2016-03-23 02:49:10
【问题描述】:
我需要更新一些表格。要更新的表和列将从另一个表中获取。所以我在过程中的更新语句是这样的
EXECUTE IMMEDIATE
'UPDATE '
|| In_owner
|| '.'
|| In_table_name
|| ' upd_tbl '
|| ' SET '
|| In_sql_stmt_col_list
|| ' WHERE '
|| In_sql_stmt_where_clause;
如您所见,表名、set 子句和 where 子句都是动态构建的。我现在要做的是在每 n 条记录后执行一次提交。我怎么做?
【问题讨论】:
-
为什么要在每n条记录后提交?
-
用谷歌搜索你,你知道什么。 community.oracle.com/thread/937361?tstart=0
-
您的意思是对于那个 single 更新语句,您希望它更新的任何行都分批提交吗?不重写
update语句不仅是不可能的,而且这是一个坏主意。为什么要破坏更新的事务性? -
@user3224907 我知道如何为更新语句执行此操作,但我想知道当我的更新通过立即执行完成时如何执行此操作。
-
只需制作
COMMIT;。EXECUTE IMMEDIATE 'COMMIT';也可以,但绝对没有必要用动态 SQL 来做
标签: oracle plsql commit execute-immediate