0

sys_refcursor について質問があります。

sys_refcursor は、select ステートメントでのみ使用できます。または、次のように使用できます。関数が sys_refcursor を返すようにしたいと思います。

p_cursor は sys_refcursor として定義されています

FOR i IN c
    LOOP
        IF (p_start_date BETWEEN i.start_date AND i.end_date)
            OR (p_end_date BETWEEN i.start_date AND i.end_date)
        THEN
            p_cursor := i.product_no;
        END IF;
    END LOOP;
4

1 に答える 1

1

必要に応じて、これを行うには2つの方法があります。

まず
、常に列をカーソルに置きたい場合、およびその条件に応じて、列に値を割り当てるかどうかを指定します。あなたは次のことができます

コード:

OPEN p_cursor FOR   
SELECT i.columna1, i.columna2,
       (SELECT i.product_no
          FROM dual
         WHERE (p_start_date BETWEEN i.start_date AND i.end_date)
            OR (p_end_date BETWEEN i.start_date AND i.end_date)
        ) as product_no
FROM table_name i

第二
に、あなたが時々コラムを持ちたいと思うなら、そして時々あなたはただ持ってはいけない。変数にクエリを動的に作成してvarcharから、そのクエリをカーソルに割り当てることができます。

コード:

DECLARE
  var VARCHAR2(200);  
BEGIN

  var := 'select * from dual';

  open p_cursor for var;

END;
于 2012-09-27T18:39:16.633 に答える