当前位置: 首页 > article >正文

Windchill查找某一个id关联的数据库表

Windchill查找某一个id关联的数据库表

1、执行想要查询区域的UI,同时使用以下命令捕获生成的 SQL

设置 log4j.logger.wt.pom.sql=DEBUG

位置: $WT_HOME\codebase\WEB-INF\log4jMethodServer.properties

2、查询数据库表之间的关系
1、使用 describe 指示数据库泄露表中的列名
  • 注意:CLASSNAMExxxxx 和 IDA3x 将位于列列表中
  • 示例:ControlBranch 表

名称 是否为空? 类型


ADHOCSTRINGIDENTIFIER                              VARCHAR2(180)
HASARCHIVEINFOARCHIVEINFO                          NUMBER(1)
CLASSNAMEKEYC5                                     VARCHAR2(600)
IDA3C5                                             NUMBER
BRANCHPOINTUFID                                    VARCHAR2(4000)
CLASSNAMEKEYB5                                     VARCHAR2(600)
IDA3B5                                             NUMBER
CLASSNAMEKEYD5                                     VARCHAR2(600)
IDA3D5                                             NUMBER
ONEOFFVERSIONID                                    VARCHAR2(180)
CLASSNAMEKEYA5                                     VARCHAR2(600)
IDA3A5                                             NUMBER
SESSIONOWNER                                       NUMBER
CREATESTAMPA2                                      DATE
MARKFORDELETEA2                           NOT NULL NUMBER
MODIFYSTAMPA2                                      DATE
CLASSNAMEA2A2                                      VARCHAR2(600)
IDA2A2                                    NOT NULL NUMBER
UPDATECOUNTA2                                      NUMBER
UPDATESTAMPA2                                      DATE
VARIATION1                                         VARCHAR2(90)
VARIATION2                                         VARCHAR2(90)
VERSIONID                                          VARCHAR2(180)
VIEWID                                             NUMBER
WIPSTATE                                           VARCHAR2(90)
2、查找唯一标识数据库表的主键
  • CLASSNAMExxxida3xxx 列成对工作
    • CLASSNAMExxx 列包含正在引用的表
    • IDA3xx 列包含这些表中的参考值
      • IDa3xx 数字指向 CLASSNAMExxx 列中引用的表中的 ida2a2(主键)值
    • 每组 CLASSNAMExxx 和 ida3xxx 对都指向多个表中的关系

示例:使用 CLASSNAMEKEYB5IDA3B5 列确定正在引用的表:

  1. 查询数据库表 (controlBranch) 以查找 Classname (ClassnameKeyB5) 的不同值
select distinct CLASSNAMEKEYB5 from controlBranch;
wt.lifecycle.LifeCycleTemplateMaster
wt.dataops.objectcol.RelationshipDefMaster
wt.doc.WTDocumentMaster
wt.inf.template.WTContainerTemplateMaster
com.ptc.windchill.option.model.ChoiceMaster
wt.dataops.objectcol.FilterCriterionDefMaster
com.ptc.windchill.option.model.OptionMaster
wt.workflow.templates.TaskFormTemplateMaster
wt.dataops.objectcol.RelationshipMapDefMaster
wt.part.WTPartMaster
wt.change2.WTChangeOrder2Master
com.ptc.arbortext.windchill.partlist.PartListMa
com.ptc.windchill.option.model.OptionSetMaster
  1. 结果指向与其他表(主键)的关系
    • 在本例中,将引用 WTDocumentMasterWTTypeDefinitionMasterEPMDocumentMaster
    • 所有引用均引用指向“to”表的 IDA2A2 列
3、使用获得的关系知识来编写有意义的查询
  • 用于生成 ControlBranch 表中引用的 WTDocumentMasters 列表的查询为:
select name, WTDocumentNumber
from WTDocumentMaster WTdocMast, ControlBranch cb
where WTdocMast.ida2a2=cb.IDA3B5;
  • IDA3B5 列具有对多个表的引用
    • 由同一行的 CLASSNAMExxxx 列中的值确定
3、需要业务对象名称或编号
  • Windchill 中的许多对象都是“迭代”的

    • 许多迭代对象的信息都存储在“主”对象上(如名称和编号)
    • 其他信息(如迭代和版本)存储在迭代的对象上
  • Windchill 中的常见对是

    • EPMDocument 和 EPMDocumentMaster
    • WTPart 和 WTPartMaster
    • WTDocument 和 WTDocumentMaster
  • 查询数据库以查看所有“主对象”的列表

    • 例:

    • select table_name from user_tables where table_name like '%MASTER';
      
  • 迭代****表和主表之间的链接始终使用 ida3masterreference

select <column list>
from WTDocument wtdoc, WTDocumentMaster wtdocm
where wtdoc.IDA3MASTERREFERENCE = wtdocm.ida2a2;
  • 如果迭代的 ida2a2 值已知,则可以在 ‘where’ 子句中添加一个条件来获取精炼的信息
    • 示例:编号和名称
select NAME,DOCUMENTNUMBER 
from EPMdocumentMaster epmdocm, EPMDocument epmd
where epmd.IDA3MASTERREFERENCE = epmdocm.ida2a2
and epmd.ida2a2=1234;
4、从 URL 在数据库中查找对象
  • 有两种类型的 Windchill URL,每种类型都包含其中的数据库引用:

1、“OR”或对象引用

  • 指向被引用对象的 IDA2A2 值(删除“3A”后)

  • 使用以下 URL 返回对象的表行的 SQL 查询:

    • …/Windchill/app/#ptc1/tcomp/infoPage?oid=OR%3Awt.meeting.actionitem.DiscreteActionItem%3A316196328&u8=1

    • select <> from DiscreteActionItem where ida2a2=316196328;
      

2、“VR”或版本引用

  1. 请参阅 BRANCHIDITERATIONINFO 列
  2. 使用以下 URL 返回对象的表行的 SQL 查询:
    • …/Windchill/app/#ptc1/tcomp/infoPage?oid=VR%3Awt.doc.WTDocument%3A705410464&u8=1
  • select <> from WTDocument where BRANCHIDITERATIONINFO=705410464;
    
5、通过执行sql文件,找到该oid所关联的数据库表:
set SERVEROUTPUT ON SIZE 1000000;
set verify OFF;
  ACCEPT IDXXXX PROMPT 'Enter the value of IDXXXX : ';
set head off;
PROMPT Processing...;
DECLARE
  CURSOR UTC_cursor IS
    select TABLE_NAME, COLUMN_NAME 
    from USER_TAB_COLUMNS
    where COLUMN_NAME like 'ID%'
    and DATA_TYPE='NUMBER';
  UTC_record UTC_cursor%ROWTYPE;

BEGIN
  FOR UTC_record IN UTC_cursor LOOP
    --FETCH UTC_cursor INTO UTC_record;
    --DBMS_OUTPUT.PUT_LINE('---');
    DECLARE
      v_count integer;
      v_spelling VARCHAR2(2) :='es';
    BEGIN
      EXECUTE IMMEDIATE
            'select count(*) from '||
            UTC_record.TABLE_NAME||
            ' where '||
            UTC_record.COLUMN_NAME||
            ' = '||
            &&IDXXXX 
            INTO v_count;
      IF v_count>0 THEN
        IF v_count=1 THEN 
          v_spelling:=''; 
          END IF;
        DBMS_OUTPUT.PUT_LINE(v_count||' match'||v_spelling||' found in '||
                             UTC_record.TABLE_NAME||
                             ' / '||
                             UTC_record.COLUMN_NAME);
      END IF;
    END;	
  END LOOP;
  DBMS_OUTPUT.PUT_LINE('Done!');
END;
/
执行sql文件来进行查询:
@C:\Users\Administrator\Desktop\ida2a2.sql;
6、开启四个记录器捕获sql

参考链接:

文章 - CS46545 - 如何在 Windchill 中记录 SQL 语句 (ptc.com)

wt.pom.sql

wt.pom.trace计时

wt.pom.stackTrace

wt.pom.rowCount

  • log4j.logger.wt.pom.sql=DEBUG 添加到 Windchill/codebase/WEB-INF/log4jMethodServer.properties
    • 将永久设置日志记录(直到从 log4jMethodServer.properties 中删除属性)
    • 将有许多关于 Windchill 启动的 SQL 语句

http://www.kler.cn/a/417117.html

相关文章:

  • 【RISC-V CPU debug 专栏 2.3 -- Run Control】
  • 【NLP 3、深度学习简介】
  • 【设计模式系列】解释器模式(十七)
  • 常用函数的使用错题汇总
  • 抽卡代码(简陋) C#
  • conan2包管理菜鸟入门之------------------交叉编译和静态编译
  • #JAVA-常用API-爬虫
  • ACM输入输出模板(下)【Java、C++版】
  • 【论文笔记】Towards Online Continuous Sign Language Recognition and Translation
  • 【JAVA进阶篇教学】第二十篇:如何高效处理List集合数据及明细数据
  • 刷LeetCode hot100--1.哈希表
  • 【系统架构设计师】高分论文:论信息系统的安全与保密设计
  • 智能化图书馆导航系统方案之系统架构与核心功能设计
  • 总结贴:Servlet过滤器、MVC拦截器
  • 安装MySQL 5.7 亲测有效
  • Android开发仿qq详情下拉头像变大
  • 力扣215:数组中第K大的元素
  • 聊聊Flink:这次把Flink的触发器(Trigger)、移除器(Evictor)讲透
  • Ozone的元数据系统架构演进和优化
  • hint: Updates were rejected because the tip of your current branch is behind!
  • 小程序跳转到本页面并传参
  • 【Zookeeper】三,Zookeeper的安装与基本操作
  • 40分钟学 Go 语言高并发:pprof性能分析工具详解
  • Pytest框架学习18--conftest.py
  • Java 虚拟机:承载 Java 生态的神奇魔盒
  • AWS CLI 操作指南