如何在不使用DESCRIBE命令的情况下描述Oracle中的表?
如何在不使用DESCRIBE命令的情况下描述Oracle中的表?
我正在上一门课,这门课很难。我们需要编写一个 Oracle 脚本,该脚本将像 DESCRIBE 命令一样运行。我们使用的书对如何使用数据字典的描述非常差。我不是在寻找答案,而是需要正确的方向。
admin 更改状态以发布 2023年5月24日
您还可以检索可以用于重建表的整个命令:
select dbms_metadata.get_ddl('TABLE','',' ') from dual;
您正在寻找
USER_TAB_COLUMNS
- 表示在执行查询的模式中的所有列及其描述的表 - 或ALL_TAB_COLUMNS
- 表示包括用户有权查看的所有表的列及其描述。一个典型的查询可能是:
select * from user_tab_columns where table_name = 'MY_TABLE' order by column_id
column_id
是表中的列的“顺序”。您应确保“MY_TABLE”有大写字母,除非您使用了大小写(一个不好的想法)添加了表,在这种情况下,您需要使用类似
=“MyTable”
的东西。具体来说,
desc
等同于以下内容,我从ss64中窃取的,这是一个很好的Oracle资源:select column_name as "Name" , nullable as "Null?" , concat(concat(concat(data_type,'('),data_length),')') as "Type" from user_tab_columns where table_name = 'MY_TABLE';
您可以通过
select * from dictionary
找到所有这种视图,这是数据字典的顶级,或者通过查看文档。还有
DBA_TAB_COLUMNS
,它与ALL_TAB_COLUMNS
相同,但适用于数据库中的每个表。这假设您有权查看它和表。如果您无权访问此表,则需要获取您的DBA授予您SELECT ANY DICTIONARY
权限。