2017-08-24 109 views
0

我想從table1中獲取ID,並根據檢索到的ID從table2中選擇數據。所以我打開了一個cursor1來檢索這些ID,然後我嘗試遍歷它並填充cursor2與table2的細節。調試時,我意識到cursor1被正確填充,循環工作正常,但只返回最後一條記錄。以下是我的oracle程序:遊標內循環只返回最後一條記錄

PROCEDURE TEST_LIST(P_ITEM_ID NUMBER,         
        P_REFCUR  OUT SYS_REFCURSOR) AS 

    BEGIN 

     DECLARE CURSOR V_REFCUR is 
       SELECT T.ID 
       FROM MY_TABLE_NAME T 
       WHERE T.ITEM_ID = P_ITEM_ID; 

     BEGIN 

     FOR V IN V_REFCUR LOOP 
      IF V.ID IS NOT NULL THEN 
      OPEN P_REFCUR FOR 
       SELECT G.*        
       FROM MY_SECOND_TABLE G 
       WHERE G.ID = V.ID 
       ORDER BY G.TABLE_DATE; 
      END IF; 
     END LOOP; 
     END; 

    END TEST_LIST; 

如何返回整個列表?我是SQL新手,感謝您的幫助。

回答

0

你不需要第一個遊標。做第一個和第二個表之間的簡單連接。

PROCEDURE TEST_LIST(P_ITEM_ID NUMBER,         
        P_REFCUR  OUT SYS_REFCURSOR) AS 

    BEGIN 
      OPEN P_REFCUR FOR 
       SELECT G.*        
       FROM MY_SECOND_TABLE G 
       join MY_TABLE_NAME T 
       on G.ID = T.ID 
       WHERE T.ITEM_ID = P_ITEM_ID 
       ORDER BY G.TABLE_DATE; 

    END; 

    END TEST_LIST; 
+0

謝謝你的回覆,它現在正在完美工作 –

相關問題