2011-11-14 16 views
0

私はIDを返すカーソルを持つ関数を持っています。私は最初のカーソルからこのIDの結果を使用して別のカーソルにいくつかのフィールドを取得する必要があります。他のカーソルでカーソルを使う/ PL/Sql

だから私の最初のカーソルは次のとおりです。

CREATE OR REPLACE function get_id(id number) 

CURSOR child_id 
    IS 
     SELECT table1_id 
      FROM table1,child 
       WHERE child_id = id 
      AND table1_id = child_chld_id; 

理想的には私の2番目のカーソルは次のようになります。

cursor grandchild_id 
is 
select table1_id from table1,child 
where child_id = (return value of id from cursor child_id) 
and table1_id = child_chld_id; 

私はこれをどのように行うのですか?

+0

@Anne - 編集用に感謝を。私は決してそれを行う方法を理解することはできません! – Cindy

+0

基本的に:コードを貼り付け、コードを選択し、 '{}'ボタンをクリックし、上記の行が空であることを確認してください。希望が助けてくれる! – Anne

+0

なぜそれらを1つのクエリに結合しないのですか?おそらくもっと効率的です。 –

答えて

1

カーソルがパラメータを受け入れることができます。

cursor grandchild_id(other_child_id number) 
is 
select table1_id from table1,child 
where child_id = grandchild_id.other_child_id 
and table1_id = child_chld_id; 

あなたがgrandchild_idカーソルを開くたびに、単に引数として適切な値を渡します。

grandchild_id(the_value_you_obtained_from_the_first_cursor) 
+0

これをOracle Discovererで使用し、データベース内のすべてのIDに対して実行します。その場合、どのように動作しますか? – Cindy

+0

@Cindy:ありがとうございます。質問を編集して、Discovererを使用しているという事実を含めることができます。 –