您现在的位置是:主页 > news > 贵州疫情最新消息今天新增了15例/深圳网站优化

贵州疫情最新消息今天新增了15例/深圳网站优化

admin2025/5/23 7:16:04news

简介贵州疫情最新消息今天新增了15例,深圳网站优化,网站开发技术html5,没有网站可以做淘宝客吗今天看到一个很有趣的问题,怎么查看一个table被数据库中那些object使用?原问题的链接如下:出于好奇,我搜索了下,个人认为可以很好的回答上面的问题。(一)正常情况(无动态SQL时)参考了链接:System/Sysdba用户…

贵州疫情最新消息今天新增了15例,深圳网站优化,网站开发技术html5,没有网站可以做淘宝客吗今天看到一个很有趣的问题,怎么查看一个table被数据库中那些object使用?原问题的链接如下:出于好奇,我搜索了下,个人认为可以很好的回答上面的问题。(一)正常情况(无动态SQL时)参考了链接:System/Sysdba用户…

今天看到一个很有趣的问题,怎么查看一个table被数据库中那些object使用?原问题的链接如下:

出于好奇,我搜索了下,个人认为可以很好的回答上面的问题。

(一)正常情况(无动态SQL时)

参考了链接:

System/Sysdba用户,可以使用以下SQL查看:

select * from dba_dependencies where referenced_name =upper('emp') and owner=upper('tmd')

普通用户可以使用以下SQL查看:

select * from all_dependencies where referenced_name =upper('emp')

上面的区别是可以看的用户范围不同:

DBA_DEPENDENCIES describes all dependencies between objects in the database. This view may only be accessible to users with DBA rights.

USER_DEPENDENCIES describes dependencies between objects only in the current user’s schema. This view does not have the column OWNER, as it is contained in the view definition.

上面的运行结果如下:

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

上面的缺点是如果表名在字符串里面,也就是存在动态执行sql的情况,则得不到对象名称。例子如下:

0818b9ca8b590ca3270a3433284dd417.png

select * from all_dependencies where name like '%PROC_DBMS%' and referenced_name =upper('emp')

结果如下:

0818b9ca8b590ca3270a3433284dd417.png

(二)动态SQL情况

对于动态sql只能从源码中查询了。参考了链接:

System/Sysdba可以使用下面的SQL查询:

select name,type,text from dba_source where upper(text) like '%EMP%' and owner=upper('tmd')

普通用户可以使用下面的SQL查询:

select name,type,text from user_source where upper(text) like '%EMP%'

以上面的例子为例:

select name,type,text from user_source where upper(text) like '%EMP%' and name like 'PROC_DBMS%'

结果如下:

0818b9ca8b590ca3270a3433284dd417.png

查看所有引用表的动态sql:

System/Sysdba用户:

select name, type, text

from dba_source

where name in (select name

from dba_source

where upper(text) like '%EMP%'

and owner = upper('tmd')

minus

select name

from dba_dependencies

where referenced_name = upper('emp')

and owner = upper('tmd'))

and owner = upper('tmd')

普通用户:

select name, type, text

from user_source

where name in (select name

from user_source

where upper(text) like '%EMP%'

minus

select name

from all_dependencies

where referenced_name = upper('emp'))

如果有朋友说,我只想要看表被那些表外键引用了,怎么办呢?

参考了链接:

查看外键引用的SQL如下:

select table_name, constraint_name, status, owner

from all_constraints

where r_owner = 'TMD'

and constraint_type = 'R'--foreign key

and r_constraint_name in (select constraint_name

from all_constraints

where constraint_type in ('P', 'U')--pk unique key

--and table_name = 'DEPT'

and owner = 'TMD')

order by table_name, constraint_name

希望对各位有用。

全文完。