注册
DM数据库查看完整表结构
专栏/技术分享/ 文章详情 /

DM数据库查看完整表结构

夜未央丶 2023/08/19 5819 2 0
摘要

背景

博主在工作中经常要查看表结构。本文分享如何在达梦数据库查看完整的表结构(包含表结构、索引和注释)

方法一、通过管理工具查看

  1. 右键表,点击属性
    image.png

  2. 点击DDL
    image.png

然而这个方法在表比较多的时候可能不太好使。表比较多时推荐使用方法二。

方法二、通过存储过程实现、

  1. 编写存储过程,实现类似MySQL show create table 的效果
-- show create table 

CREATE OR REPLACE PROCEDURE show_create_table( db IN varchar(255), tb IN varchar(255)) AS
    sql1 text;
    ret text := '';
    cmt text :='';
    sql2 text :='';
BEGIN
	FOR WSX IN (select TABLEDEF(db,tb) as ddl from dual) LOOP
		ret:= ret||WSX.DDL;
	END LOOP;
	ret := ret||chr(10);
	-- print ret;
	FOR ZXCV IN (select INDEX_NAME from ALL_INDEXES where TABLE_OWNER=db and TABLE_NAME=tb ) LOOP
         sql1 := 'select dbms_metadata.get_ddl(''INDEX'','''||ZXCV.INDEX_NAME||''','''||db||''') from dual';
         for QAZ IN (select dbms_metadata.get_ddl('INDEX',ZXCV.INDEX_NAME,DB)as DDL from dual ) LOOP
         	ret:= ret||QAZ.DDL;
         	ret := ret||chr(10);
         END LOOP;
    END LOOP;
    -- print ret;
    ret := ret||chr(10);
    ret := ret||chr(13);

	FOR TAB_CMT IN (select * from DBA_TAB_COMMENTS where OWNER=db AND TABLE_NAME=tb) LOOP
		cmt:= cmt||'COMMENT ON TABLE '||TAB_CMT.OWNER||'.'||TAB_CMT.TABLE_NAME||' IS '''||TAB_CMT.COMMENTS||''';'||char(10);
	END LOOP;
	FOR COL_CMT IN (select * from DBA_COL_COMMENTS where OWNER=db AND TABLE_NAME=tb) LOOP
		cmt:= cmt||'COMMENT ON COLUMN '||COL_CMT.OWNER||'.'||COL_CMT.TABLE_NAME||'.'||COL_CMT.COLUMN_NAME||' IS '''||COL_CMT.COMMENTS||''';'||char(10);
	END LOOP;
	cmt:=replace(cmt,'''','''''');
	ret:=ret||cmt;
	sql2 := 'select '''|| ret||''' as ddl ';
	-- print sql2;
	EXECUTE IMMEDIATE sql2;
END;

2.调用(注意模式名和表名的大小写问题)

call show_create_table('TESTDB','TEST')
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服