Как проверить, возвращает ли REF курсор возвращает данные из процедуры PL / SQL

StackOverflow https://stackoverflow.com/questions/4044395

Вопрос

Я хотел бы знать, как проверить, возвращает ли Ref Cursor.

Допустим, у меня есть следующий код в пакете 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 находит некоторые данные.

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

Что было бы лучшим способом знать, если Foo что-то находит?

Спасибо.

Это было полезно?

Решение

Единственный способ узнать, что он нашел что-то, это привлечь из него:

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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top