Oracle非Ansi到Ansi T-SQL
我是一个SQL server的家伙,使用有限的Oracle编码。我继承了一系列需要转换为ANSI的视图。我正在寻找的是有人教育我,如果可能的话,在一个系统的方式,这样做的步骤。我有一些年轻人,他们会阅读和理解TSQL风格的代码,而不是像现在这样。我想掌握这些知识,让他们开始研究它们;有很多。转换工具不起作用,我们没有时间使用它,没有预算购买它,我们的it部门也不允许我们安装任何东西。(我们必须手动执行此操作) 我想知道基于解释代码的步骤(系统方法),而不是学习数据或试图理解现有代码的编写方式 例如,以下是步骤:Oracle非Ansi到Ansi T-SQL,sql,Sql,我是一个SQL server的家伙,使用有限的Oracle编码。我继承了一系列需要转换为ANSI的视图。我正在寻找的是有人教育我,如果可能的话,在一个系统的方式,这样做的步骤。我有一些年轻人,他们会阅读和理解TSQL风格的代码,而不是像现在这样。我想掌握这些知识,让他们开始研究它们;有很多。转换工具不起作用,我们没有时间使用它,没有预算购买它,我们的it部门也不允许我们安装任何东西。(我们必须手动执行此操作) 我想知道基于解释代码的步骤(系统方法),而不是学习数据或试图理解现有代码的编写方式 例
FROM WORK MECHANISMS WM,
WT_MANPOWER_RESOURCES WTMR,
LOGICAL_ITEMS LI,
APSWHS.WMX_LOG_REL_ELEM WLRE,
WMECH_DSGN_COMP_ELEMENTS WDCE,
WORK_TASKS WT,
persons_v per,
APSWHS.WMX_WO_WF_STATUS WFA,
RT_DETAILS RTD
WHERE
WFA.WF_SEQ > 639
AND WTMR.WTASK_WMECH_DB_ID = WM.DB_ID
AND WTMR.WTASK_DB_ID = 0
AND WTMR.WTMANPOW_TYPE = ‘LEAD’
AND WT.WMECH_DB_ID = WM.DB_ID
AND WT. DB_ID= 0
AND WFA.WM_DB_ID = WM.DB_ID
AND PER.per_db_id = wm.assigned_to_per_db_id
AND RTD.WMECH_DB_ID = WM.DB_ID
AND WDCE .WMECH_DB_ID = WFA.WM_DB_ID
AND WDCE.LITM_ID = WLRE.LITM_ID
AND WDCE.LITM_ID = LI.ID
AND WDCE.PRIMARY_DCID_FLAG = ‘Y’
我假设您希望从表列表(
WHERE
子句中的连接谓词)迁移到ANSI连接语法。这与T-SQL无关
理想情况下,您将进行ERD,并以视觉方式检查表的列出顺序。我个人觉得这比单纯的文字更容易。尽管如此,也可以使用纯文本。以下是步骤:
以第一个表及其所有非联接谓词为例:
取下一个可以连接到第一个表的表,以及它的所有连接谓词和非连接谓词
下一张桌子。。。
请注意,这不是原始表列表中的下一个表,而是另一个表,即可以在不创建笛卡尔积的情况下连接到现有连接图的下一个表。特别是,(目前)我跳过了逻辑项
和APSWHS.WMX\u LOG\u REL\u ELEM
和WMECH\u DSGN\u COMP\u元素
。稍后我会将它们添加到图表中
FROM WORK_MECHANISMS WM
JOIN WT_MANPOWER_RESOURCES WTMR
ON WTMR.WTASK_WMECH_DB_ID = WM.DB_ID
JOIN WORK_TASKS WT
ON WT.WMECH_DB_ID = WM.DB_ID
WHERE WTMR.WTASK_DB_ID = 0
AND WTRM.WTMANPOW_TYPE = 'LEAD'
AND WT.DB_ID = 0
下一张桌子。。。
继续向新语句中添加表,直到添加完所有表。如果遇到
(+)
运算符,“只需”正确使用左连接
语义。“T-SQL”不是ANSI SQL-显示的SQL实际上是ANSI SQLa\u horse\u,没有名称,提供值或不做注释。你太聪明了,没有抓住要点。我的问题不是什么是ANSI,什么不是ANSI。我的观点是我看不懂它,不管它是什么。。。。。
FROM WORK_MECHANISMS WM
JOIN WT_MANPOWER_RESOURCES WTMR
ON WTMR.WTASK_WMECH_DB_ID = WM.DB_ID
WHERE WTMR.WTASK_DB_ID = 0
AND WTRM.WTMANPOW_TYPE = 'LEAD'
FROM WORK_MECHANISMS WM
JOIN WT_MANPOWER_RESOURCES WTMR
ON WTMR.WTASK_WMECH_DB_ID = WM.DB_ID
JOIN WORK_TASKS WT
ON WT.WMECH_DB_ID = WM.DB_ID
WHERE WTMR.WTASK_DB_ID = 0
AND WTRM.WTMANPOW_TYPE = 'LEAD'
AND WT.DB_ID = 0