博主在工作中经常要查看表结构。本文分享如何在达梦数据库查看完整的表结构(包含表结构、索引和注释)
右键表,点击属性
点击DDL
然而这个方法在表比较多的时候可能不太好使。表比较多时推荐使用方法二。
-- 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')
文章
阅读量
获赞