как проверить, возвращает ли курсор ref данные из процедуры pl / sql - PullRequest
2 голосов
/ 28 октября 2010

Я хотел бы знать, как проверить, возвращает ли указатель 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 использует несколько таблиц.

Мне нужны данные, возвращаемые из Foo в приложении asp.net, но мне также нужно что-то делать, когда Foo находит какие-то данные.

Я хочу повторно использовать запрос в нескольких местах,но я не думаю, что это было бы хорошим кандидатом для представления.

Какой лучший способ узнать, найдет ли Фу что-нибудь?

Спасибо.

1 Ответ

5 голосов
/ 28 октября 2010

Единственный способ узнать, нашел ли он что-то, - это ПОЛУЧИТЬ с него:

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;
...