我有"read only"访问Oracle数据库中的几个表 . 我需要获取一些列的架构信息 . 我'd like to use something analogous to MS SQL' s sp_help
.
我在这个查询中看到了我感兴趣的表:
SELECT * FROM ALL_TABLES
当我运行此查询时,Oracle告诉我“架构中找不到表”,是的,参数是正确的 .
SELECT
DBMS_METADATA.GET_DDL('TABLE', 'ITEM_COMMIT_AGG', 'INTAMPS') AS DDL
FROM DUAL;
在使用我的Oracle通用翻译器9000之后,我推测这不起作用,因为我没有足够的权限 . 鉴于我的约束,我怎样才能获得表上的列的数据类型和数据长度?我有PL-SQL语句的读访问权限?
8 回答
快速而肮脏的方式(例如,查看数据如何存储在oracle中)
将显示表sys.dual中的虚拟列具有typ = 1(varchar2),而10是Typ = 2(数字) .
ALL_TAB_COLUMNS
应该可以从PL / SQL查询 .DESC
是一个SQL * Plus命令 .注意:如果您尝试使用all_tab_columns视图获取不同SCHEMA中的表的此信息,则会出现此问题,因为我们的应用程序出于安全目的使用不同的SCHEMA .
使用以下内容:
例如:
我发现这种情况的最佳解决方案是
@Aaron Stainback,谢谢你的纠正!
Oracle: Get a list of the full datatype in your table:
您可以使用
desc
命令 .这将为您提供列名,null是否有效以及数据类型(以及长度,如果适用)