微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle 中“.schema sqlite_master”的等价物

如何解决Oracle 中“.schema sqlite_master”的等价物

我正在尝试对 sqlite 和 Oracle 进行相同的练习。在 sqlite 中,有一个sqlite_master 包含数据库中包含的所有其他表、索引、触发器和视图的描述。我可以看到使用 sqlite_master 生成 .schema sqlite_master查询

在 Oracle 中,数据字典以多个视图(DBAALLUSER)的形式呈现给我们。我们以表 USER_TABLES 为例。我们可以对USER_TABLES进行查询,例如

SELECT table_name
FROM USER_TABLES;

无论如何要获取用于在 Oracle 中创建表 USER_TABLES查询?我试过了

SELECT dbms_Metadata.get_ddl('TABLE','USER_TABLES')
FROM dual;

但它不起作用。

解决方法

我不确定你在找什么,但如果你想在 oracle 中定义任何表,你可以使用:

Describe TableName

或者,如果您想拥有表、视图或列的列表,您可以使用以下查询: 对于表格:

select * from select * from all_tables 

对于列:

select * from all_tab_columns

对于视图:

select * from select * from all_views 

获取表的所有列信息: 选择 *

 from all_tab_columns
 where upper(table_name) = upper('Test')
 order by column_id

通常 oracle 以大写形式存储 table_name,所以我使用了 upper() 或者你可以直接输入 'TEST'

,

你可以使用这个:

DECLARE
   DDL  CLOB;
BEGIN
   FOR aTab IN (SELECT TABLE_NAME FROM USER_TABLES) LOOP
      DDL := DBMS_METADATA.GET_DDL('TABLE',aTab.TABLE_NAME);
      DBMS_OUTPUT.PUT_LINE(DDL);
   END LOOP;
END;

您可以在运行查询之前使用 DBMS_METADATA.SET_TRANSFORM_PARAM() 自定义输出。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。