2014-04-08 3 views
0

PL/SQL에서이 작업을 수행 할 수 있는지 또는 여러 출력 커서에서 내 웹 서비스에 XML 트리를 작성해야하는지 잘 모르겠습니다. 그러나 oracle에서 계층 적 쿼리에 대해 조금 읽었습니다. 더 우아한 솔루션처럼 보였습니다. 나는 SQL로 매우 익숙하지 않기 때문에, 어려운 경우에 계층 적 쿼리의 예제를 제 경우에 적용하고 있습니다.웹 서비스, Oracle, PLSQL에서 계층 적 데이터 반환하기

이 계층에는 4 개의 테이블이 있습니다.

  1. 선적 :: KEYS {INTERNAL_ASN, BILL_OF_LADING}
  2. ORDERS :: KEYS {INTERNAL_ASN, BILL_OF_LADING, PO_NO}
  3. 종이팩 :: KEYS {INTERNAL_ASN, BILL_OF_LADING, PO_NO, CARTON_NO}
  4. 항목 : : KEYS {INTERNAL_ASN, BILL_OF_LADING, PO_NO, CARTON_NO, UPC_NO}

나는 결국이 같은 무언가로 단순화 된 XML로 결국 반환되는 데이터 집합을 원하는 :

<DATA> 
    <SHIPMENTS> 
    <SHIPMENT> 
     <ORDERS> 
     <ORDER> 
      <CARTONS> 
      <CARTON> 
       <ITEMS> 
       <ITEM></ITEM> 
       <ITEM></ITEM> 
       <ITEM></ITEM> 
       </ITEMS> 
      </CARTON> 
      <CARTON> 
       <ITEMS> 
       <ITEM></ITEM> 
       <ITEM></ITEM> 
       </ITEMS> 
      </CARTON> 
      </CARTONS> 
     </ORDER> 
     <ORDER></ORDER> 
     </ORDERS> 
    </SHIPMENT> 
    </SHIPMENTS> 
</DATA> 

내 경우를 조금 더 어렵게 만드는 이유는 내가 반납 한 물건을 실제로 선택하는 것이기 때문에 실제로는 판지 상자에서 시작합니다. 이 쿼리는 내가 앞뒤로 필요로하는 모든 카톤 행을 제공합니다.

SELECT * 
FROM 
Q194977.AN_CARTON_INFO CI 
WHERE 
CI.PO_NO = 4887960 
AND CI.STORE_NO = 1560 

다음은 Oracle 계층 적 쿼리에서 찾은 설명서이지만 예제는 모두 동일한 테이블입니다. 어떻게 방법이의해야에

http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm#i2060615

어떤 전문가의 의견?

답변

2

Oracle 계층 적 쿼리 또는 연결 쿼리가 필요한 것과 다릅니다. 단일 쿼리를 사용하여 필요한 구조를 생성 할 수 있지만 Oracle XML SQL 함수를 사용해야합니다. 여기에 오라클 문서에 대한 링크입니다 :

http://docs.oracle.com/cd/E11882_01/appdev.112/e16659/xdb13gen.htm#i1029583

는 여기에 당신이 끝낼 수 있습니다 무언가이다 :

SELECT 
     XMLElement("CARTONS", 
      XMLAgg (
      XMLElement("CARTON", 
       XMLForest(carton_id As "CARTON_ID", carton_name As "NAME"), 
       ( 
        select XMLElement("ITEMS", 
          XMLAgg( 
           XMLElement("ITEM", 
            XMLForest(item_id As "ITEM_ID", description As "DESCRIPTION") 
           ) 
          ) 
         )    
        from ITEMS 
        where carton_id = c.carton_id 
       ) 
      ) 
     ) 
     ) As myxml 
    FROM CARTONS c 

for producing: 

      <CARTONS> 
      <CARTON> 
       <ITEMS> 
       <ITEM></ITEM> 
       <ITEM></ITEM> 
       <ITEM></ITEM> 
       </ITEMS> 
      </CARTON> 
      <CARTON> 
       <ITEMS> 
       <ITEM></ITEM> 
       <ITEM></ITEM> 
       </ITEMS> 
      </CARTON> 
      </CARTONS> 

위의 쿼리가 당신의 상자 수준에서 시작됩니다. 선적 및 주문 레이어를 추가하면 더욱 복잡해질 것입니다. 기본적으로 쿼리에서 구조체를 생성하지만 확실히 수행 할 수 있습니다.

REST API에서 JSON을 제작하고 싶습니다. 그런 다음 PL/SQL 프레임 워크를 사용해 볼 수 있습니다. 이 프레임 워크는 일반적인 쿼리에서 복잡한 JSON 구조를 생성하는 유틸리티를 제공합니다.

http://backlogic.net

당신은 [사용 설명서]의 5.3 절에서 몇 가지 흥미로운 예제를 찾을 수있다 [1]

: 당신이나 다른 사람들이 알고 호기심 경우, 여기에 우리의 사이트에 대한 링크입니다