注册

如何在dm8实现 mysql执行show full columns from xx的 等价查询?

Vivian 2023/04/26 1589 3

【DM版本】:4-2-70-21.09.30-148424-10028-SEC Pack3
【操作系统】:麒麟v10
【CPU】:kunpeng-920
【问题描述】*:在达梦中通过SQL查询,实现在mysql执行show full columns from xx的 等价查询 。 特别是获取到结果中 Privileges 字段返回的内容。
【诉求】:希望帮忙确定一下查询关联关系的正确性,以及如果获取Privileges 的内容。

select     
 A.COLUMN_NAME   as "Filed"
, A.DATA_TYPE  || '('||  A.DATA_LENGTH || ')' as "Type"
, A.nullable as "Null"
, D.CONSTRAINT_TYPE as "Key"
, A.data_default as "Default"
, "Extra" as "Extra"
,'select,insert,update,references' as "Privileges"
,ifnull(comment$,'') as "Comment"
 from dba_tab_columns a 
LEFT JOIN SYSCOLUMNCOMMENTS B ON A.TABLE_NAME =B.TVNAME AND A.COLUMN_NAME =B.COLNAME AND A.OWNER =B.SCHNAME
LEFT JOIN DBA_CONS_COLUMNS C ON A.OWNER=C.OWNER AND A.TABLE_NAME =C.TABLE_NAME AND A.COLUMN_NAME =C.COLUMN_NAME
LEFT JOIN DBA_CONSTRAINTS D ON D.CONSTRAINT_NAME=C.CONSTRAINT_NAME
left join (
select b.table_name,b.owner, decode(a.info2,1,'auto_increment',null) as  "Extra",
       a.name as COLUMN_NAME 
  from SYS.SYSCOLUMNS a, 
       all_tables b, 
       sys.sysobjects c 
 where a.INFO2 
       & 0x01 = 0x01
   and a.id=c.id 
   and c.name= b.table_name )e on a.OWNER=e.OWNER and a.TABLE_NAME=e.table_name and A.COLUMN_NAME=e.COLUMN_NAME
where  A.owner=? and   A.TABLE_NAME =?

回答 0
暂无回答
扫一扫
联系客服