哪个Oracle表使用序列?

mcr*_*isc 7 sql database oracle sequence

有序列,我需要找出哪个table.column获取其值.据我所知,Oracle没有跟踪这种关系.因此,在源代码中查找序列是唯一的方法.是对的吗?

有谁知道找出这个序列表关系的某种方法?

APC*_*APC 8

问题是Oracle允许我们使用一个序列来填充多个表中的列.可能需要这种情况的场景包括超类型/子类型实现.

您可以使用数据字典中的依赖项来标识关系.例如,如果您使用触发器来分配值,那么此查询将帮助您:

select ut.table_name
       , ud.referenced_name as sequence_name
from   user_dependencies ud
       join user_triggers ut on (ut.trigger_name = ud.name)
where ud.type='TRIGGER' 
and ud.referenced_type='SEQUENCE'
/
Run Code Online (Sandbox Code Playgroud)

如果您使用PL/SQL,那么您可以编写类似的内容TYPE in ('PACKAGE BODY', 'PROCEDURE', 'FUNCTION'),但是当您有多个匹配时,仍然需要通过源代码进行拖网来分配表和序列​​.


Ton*_*ews 2

在数据库中,您可以搜索模式中所有存储的代码,如下所示:

select type, name, line, text
from all_source
where owner = 'MYSCHEMA'
and upper(text) like '%MYSEQ.NEXTVAL%';
Run Code Online (Sandbox Code Playgroud)

在 SQL Developer 中,有一个报告可以执行此操作。