2

refカーソルがデータを返すかどうかを確認する方法を教えてください。

PL/SQLパッケージに次のコードがあるとします。

type refcursor is ref cursor;

procedure Foo(cursorresult out refcursor) is
begin
  open cursorresult for
    select *
      from table t
      inner join t2 on t.id = t2.id
     where t.column1 is null;
end;

procedure DoSomeghingIfFooHasResults is
  curFoo refcursor;
  begin
    Foo(curSansOwner);
    if curFoo%found then
      -- Do something
    end if;
end function;

このコードはより複雑なプロセスで使用され、Fooのクエリは複数のテーブルを使用しています。

asp.netアプリケーションでFooから返されたデータが必要ですが、Fooがデータを見つけたときにも何かを行う必要があります。

クエリをいくつかの場所で再利用したいのですが、これはビューの候補としては適切ではないと思います。

Fooが何かを見つけたかどうかを知るための最良の方法は何でしょうか?

ありがとう。

4

1 に答える 1

5

何かが見つかったかどうかを知る唯一の方法は、そこからフェッチすることです。

procedure DoSomeghingIfFooHasResults is
  curFoo refcursor;
  recFoo mytable%ROWTYPE;
  begin
    Foo(curFoo);
    fetch curFoo into recFoo;
    if curFoo%found then
      -- Do something
    end if;
end function;
于 2010-10-28T15:30:07.230 に答える