簡體   English   中英

從Oracle遷移到SQL Server

[英]Migrate from Oracle to SQL Server

我用Oracle編寫了以下查詢

delete from EQUI_HIERARCHY; 

select max(level) into v_max_depth 
from EQUIP_D

connect by prior EQUIP_NO=PARENT_EQUIP_NO 
start with PARENT_EQUIP_NO is null; 

如何將其轉換為SQL Server?

例如,由IBM DB2和SQL Server實施的實現遞歸查詢的SQL標准方法是WITH子句。 請參閱本文,了解一個將CONNECT BY轉換為WITH(技術上是遞歸CTE)的示例-該示例適用於DB2,但我相信它也可以在SQL Server上使用。

SQL Server ,IBM DB2或PostgreSQL 8.4中(以及在SQL標准中,這是值得的;-),完美等效的解決方案是遞歸查詢(更復雜的語法,但實際上,甚至更大的功能和靈活性) ):

    WITH n(v_max_depth ) AS 
         (SELECT max(level)
          FROM EQUIP_D
          WHERE PARENT_EQUIP_NO IS NULL
               UNION ALL
          SELECT max(level)
          FROM EQUIP_D as nplus1, n
          WHERE n.EQUIP_NO= nplus1.PARENT_EQUIP_NO)

   SELECT max(v_max_depth) FROM n

Oracle的START WITH子句變成第一嵌套SELECT ,遞歸的基座的情況下,要UNIONed與作為只是另一種遞歸部分SELECT

當然, MSDN上記錄了SQL Server特定的WITH風格,它還提供了使用此關鍵字的准則和限制以及幾個示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM