Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle非Ansi到Ansi T-SQL_Sql - Fatal编程技术网

Oracle非Ansi到Ansi T-SQL

Oracle非Ansi到Ansi T-SQL,sql,Sql,我是一个SQL server的家伙,使用有限的Oracle编码。我继承了一系列需要转换为ANSI的视图。我正在寻找的是有人教育我,如果可能的话,在一个系统的方式,这样做的步骤。我有一些年轻人,他们会阅读和理解TSQL风格的代码,而不是像现在这样。我想掌握这些知识,让他们开始研究它们;有很多。转换工具不起作用,我们没有时间使用它,没有预算购买它,我们的it部门也不允许我们安装任何东西。(我们必须手动执行此操作) 我想知道基于解释代码的步骤(系统方法),而不是学习数据或试图理解现有代码的编写方式 例

我是一个SQL server的家伙,使用有限的Oracle编码。我继承了一系列需要转换为ANSI的视图。我正在寻找的是有人教育我,如果可能的话,在一个系统的方式,这样做的步骤。我有一些年轻人,他们会阅读和理解TSQL风格的代码,而不是像现在这样。我想掌握这些知识,让他们开始研究它们;有很多。转换工具不起作用,我们没有时间使用它,没有预算购买它,我们的it部门也不允许我们安装任何东西。(我们必须手动执行此操作)

我想知道基于解释代码的步骤(系统方法),而不是学习数据或试图理解现有代码的编写方式

例如,以下是步骤:

  • 对表重新排序以匹配它们在where子句中的位置
  • 根据where子句中的行的表来分隔这些行,以便更易于阅读
  • 用left、right、outer等替换Oracle联接运算符
  • 在where子句中保留定义值的行,或者在表联接中使用“AND”将它们包括在内
  • 这项任务将由初级SQL server人员完成,因此它必须尽可能简单直接

    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