如何判断一个数据库对象的存在性

[复制链接]
查看11 | 回复9 | 2008-1-2 17:35:53 | 显示全部楼层 |阅读模式
不通过dba_objects或user_objetcs,或者user_tables等这样的视图.因为用户可能对这些视图没有视图权限。
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
如果是表什么的,就查询一下,报错就不存在,不报错存在
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
那就根据user_tables建张普通表呗,把普通表维护好了就ok了
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
同义词都不给用啊,这个就和dual一样,为什么不给查询?
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
SQL> show user
USER is "SCOTT"
SQL> create directory sst_dir as '/home/oracle';
Directory created.
在scott的user_objects里面找不到,却在dba_directories里找到,owner是SYS
为何?
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
用dbms_assert包中的方法吧!


回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
翻了翻文档,
我觉得LZ可以用,
SCHEMA_NAME 和SQL_OBJECT_NAME这两个。
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
原帖由 ccsnmoracle 于 2010-11-16 15:19 发表
翻了翻文档,
我觉得LZ可以用,
SCHEMA_NAME 和SQL_OBJECT_NAME这两个。

哪个表/视图
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
DBMS_ASSERT.SCHEMA_NAME
DBMS_ASSERT.SQL_OBJECT_NAME
这是两个方法。
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
原帖由 ccsnmoracle 于 2010-11-16 16:35 发表
DBMS_ASSERT.SCHEMA_NAME
DBMS_ASSERT.SQL_OBJECT_NAME
这是两个方法。


dbms_assert.sql_object_name是个好方法,
但是对目录对象却是无效

SQL> show user
USER is "SCOTT"
SQL> select object_name,object_type,owner from dba_objects where object_name='SST_DIR';
OBJECT_NAME
OBJECT_TYPE OWNER
-------------------- ------------------- ----------
SST_DIR
DIRECTORY
SYS
SQL> select DBMS_ASSERT.SQL_OBJECT_NAME('SST_DIR') from dual;
select DBMS_ASSERT.SQL_OBJECT_NAME('SST_DIR') from dual
*
ERROR at line 1:
ORA-44002: invalid object name
ORA-06512: at "SYS.DBMS_ASSERT", line 283

SQL> conn / as sysdba
Connected.
SQL> show user
USER is "SYS"
SQL> select DBMS_ASSERT.SQL_OBJECT_NAME('SST_DIR') from dual;
select DBMS_ASSERT.SQL_OBJECT_NAME('SST_DIR') from dual
*
ERROR at line 1:
ORA-44002: invalid object name
ORA-06512: at "SYS.DBMS_ASSERT", line 283
SQL> conn scott/tiger
Connected.
SQL> drop directory SST_DIR;
Directory dropped.


其他对象都可以,就是dir对象不可
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行