2010-09-02 94 views
-4

每一行復雜的遊標應該與另一個表處連接在一起,整個結果應返回一個指針在返回遊標多行

說光標1返回5行。 這5行中的每一行都應該與table1連接。 並且所有5行的最終結果應返回1行。

plz幫助

+0

因此,您希望cursor1的五行加入到table1的相應行中,那麼您希望連接產生的行連接在一起成爲一個巨大的單行?那是對的嗎? – 2010-09-02 10:59:04

+2

這是真的不清楚你要求什麼。一些示例輸入數據和預期輸出將非常有用。它不一定是完整的數據集,使用EMP和DEPT的簡單測試案例可以做到這一點。 – APC 2010-09-02 15:25:53

+0

如果您更改結果集的單詞「光標」,它變得更簡單。它只是一個聯接,而內聯視圖可能會做到。如何發佈代碼(或至少它的精簡版本) – 2010-09-02 23:09:45

回答

1

這是相當棘手的獲取記錄從參考遊標對結果集的另一個查詢的結合。一個更好的想法是打開一個參考所有相關表的SELECT參數。

+0

在連接5個表之後的遊標中的列employeeID,employeename,nativeplace,permanentplace,presentplace等...... 表B:employeeid,employeename ,地點,電話,郵編,街道等... 最後,我們應該返回一個遊標,在加入遊標結果和基於empid和empname的表B結果之後。 是否可以返回一個遊標? Plz help – 2010-09-03 04:44:44

0

的問題是不明確的,但它聽起來像是你需要的是這樣的

一)定義你的結果行的形狀 b)定義對象類型 的集合對象類型c)使用集合類型的返回類型創建函數 - 這可以將遊標A作爲參數(SYS_REFCURSOR),將遊標A中的每一行連接到表B,然後對每個結果行使用PIPE ROW。 d)如果最終結果是需要一個光標,然後沿着

FUNCTION complex_query(in_cursor SYS_REFCURSOR) 
RETURN SYS_REFCURSOR 
IS 
    lreturn SYS_REFCURSOR; 
BEGIN 
    OPEN lreturn FOR 
     (SELECT * FROM TABLE(convert_to_collection(in_cursor))); 
    RETURN lreturn; 
END; 

或者線的另一功能,你可以只是做SELECT * FROM TABLE(convert_to_collection(in_cursor))直接。

我不明白的是一切都返回爲1行的要求。