【发布时间】:2016-12-04 20:52:49
【问题描述】:
背景
我正在尝试创建一个从审核列表中移动数据的程序 定期将表转移到不同的数据库。
为了避免产生大量撤消,我想一次执行这 1000 条记录 时间。出于这个原因,我会将数据批量收集到一个 收集每个审计表,每次限制为 1000 条记录 时间,将数据插入远程表,然后删除 在 forall 中获取了 1000 条记录。
我还将执行其他各种任务(记录数据迁移 为每个表和发送通知。
由于审计表的数量很大,我不想 为每个表创建一个过程。所以,我需要能够 动态创建一个与 表。
问题
如何在一个表中创建与记录相同类型的集合 PL/SQL 过程?
注意:集合只需要与表在代码运行的那一刻具有相同的结构。我不希望收藏 动态变化 - 我知道这是不可能的。只有在程序运行的那一刻,它才需要创建与表相同的结构,以便我可以将其用于复制操作。
我已经尝试过的
我尝试从数据中创建动态 SQL 语句 字典。我意识到我可以为常见类型做到这一点,而且我 能够处理精度,varchar2 byte vs char等。但我认为 对于某些其他数据类型/精度组合可能会失败。
【问题讨论】:
-
How can I create a collection of the same type as a record?通过使用%rowtype属性。所以它可能是这样的type t_col is table of your_table_name%rowtype; -
But I think it might fail for some other data types/precisions combinations.- 比如? -
@NicholasKrasnov 如果我们事先不知道类型怎么办?我想这就是它的意义所在。
-
@NicholasKrasnov 啊, %rowtype 是我需要的。谢谢!
-
@GurwinderSingh 我试图通过查询数据字典来动态创建集合,因为我不知道 %rowtype 属性。