UDN-企业互联网技术人气社区

板块导航

浏览  : 107
回复  : 1

从UAP、NC65中获取某表的字段列表字段列表参照名称编码_黑分

[复制链接]
uec_Q9et04vxAz的头像 楼主
发表于 2018-11-8 19:33:37 | 显示全部楼层 |阅读模式
  1. SELECT
  2.         a.NAME 字段名,
  3.         a.displayname 显示名,
  4.         d.defaulttablename 参照表名,
  5.         d.classtype 类型,
  6.         e.tablename 参照表,
  7.         e.refcolumn 参照主键,
  8.         f.refcolumn 参照名称,        
  9.         g.refcolumn 参照编码
  10. FROM
  11.         md_property a
  12. LEFT JOIN md_class b ON a.classid=b.id
  13. LEFT JOIN DBA_TAB_COLS c ON UPPER(b.defaulttablename)=c.TABLE_NAME and UPPER(a.name)= c.COLUMN_NAME
  14. LEFT JOIN md_class d ON a.datatype=d.id
  15. LEFT JOIN (
  16. select distinct d.name REFTYPE,c.defaulttablename TABLENAME,a.name REFCOLUMN from md_property a
  17. left join md_bizItfMap b on a.id=b.classattrid
  18. left join md_class c on b.classid=c.id
  19. left join md_property d on d.id=b.intattrid
  20. left join md_class e on e.id=d.classid
  21. where
  22. e.name='IBDObject' and d.name='id') e on e.tablename=d.defaulttablename
  23. LEFT JOIN (
  24. select distinct d.name REFTYPE,c.defaulttablename TABLENAME,a.name REFCOLUMN from md_property a
  25. left join md_bizItfMap b on a.id=b.classattrid
  26. left join md_class c on b.classid=c.id
  27. left join md_property d on d.id=b.intattrid
  28. left join md_class e on e.id=d.classid
  29. where
  30. e.name='IBDObject' and d.name='name') f on f.tablename=d.defaulttablename
  31. LEFT JOIN (
  32. select distinct d.name REFTYPE,c.defaulttablename TABLENAME,a.name REFCOLUMN from md_property a
  33. left join md_bizItfMap b on a.id=b.classattrid
  34. left join md_class c on b.classid=c.id
  35. left join md_property d on d.id=b.intattrid
  36. left join md_class e on e.id=d.classid
  37. where
  38. e.name='IBDObject' and d.name='code') g on g.tablename=d.defaulttablename
  39. where
  40. b.defaulttablename='bd_material_v' and c.OWNER='NC65'
  41. order by a.attrsequence;
复制代码

通过以上的SQL可以查询以下信息:
1、某张表的所有字段信息(已过滤元数据中存在,但是实际表不存在的字段)
2、某个字段的参照信息,包括参照名称、参照编码、参照主键。
执行效果如下:
执行效果.png


应用场景:
可以用于一些自动化处理的场景、外部应用程序互联互通。在仅仅知道表名的情况下,就可以拼SQL对表中的数据进行操作。

作者:——用友网络股份有限公司黑龙江分公司 杨若瑜


uec_Q9et04vxAz的头像 楼主
发表于 2018-11-8 20:42:49 | 显示全部楼层
c.OWNER='NC65'
可以把NC65换成SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA')
这样就可以不用指定Oracle用户了。相当的方便
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部