如何分离在 Oracle 中为特定表插入、更新和删除记录的过程

Posted

技术标签:

【中文标题】如何分离在 Oracle 中为特定表插入、更新和删除记录的过程【英文标题】:How to separate procedures which insert, update and delete records in Oracle for a Particular Table 【发布时间】:2015-01-08 14:07:33 【问题描述】:

我有一个应用程序,其中有许多表和许多过程。

我想得到只插入的程序。

例如在 TOAD 中,当我在表属性中搜索表 EMP 时,我们可以得到过程、函数和触发器的列表。

我怎样才能得到只插入到表 EMP 中的程序。

【问题讨论】:

【参考方案1】:

您可以做的是,从 *_SOURCE 数据字典视图中搜索关键字 insertupdatedelete 以查找特定的 procedure

搜索栏是TEXT in *_SOURCE。如果您想在同一架构中搜索,请查看USER_SOURCE

类似的东西-

从 USER_SOURCE 中选择 * 其中 NAME = UPPER('my_procedure') AND LOWER(text) like '%update%' 和 LOWER(text) 不喜欢 '%insert%' 和 LOWER(text) 不喜欢 '%delete%'

以上查询的输出将确保PROCEDURE 只是在更新。

为什么要搜索FUNCTIONs?通过PROCEDURE 执行DML 很好,为什么要在FUNCTION 中执行DML?您不应该在这里寻找 FUNCTION。

【讨论】:

以上是关于如何分离在 Oracle 中为特定表插入、更新和删除记录的过程的主要内容,如果未能解决你的问题,请参考以下文章

如何在oracle中为特定用户查询没有所有者名称的表名

Oracle:如何 UPSERT(更新或插入表?)

(Oracle SQL) 如何在插入后使用唯一键更新表?

如何在mysql 5中记录特定表的插入/更新查询

Oracle:如何循环并查找表之间的依赖/依赖关系,以便为每个表执行插入/更新操作?

如何在 SQL 中对触发器进行语法化,以便在插入后从同一个表中更新列(oracle 数据库)