كيفية التحقق مما إذا كان مؤشر المرجع يرجع البيانات من إجراء PL/SQL

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

سؤال

أود أن أعرف كيفية التحقق مما إذا كان مؤشر المرجع يرجع البيانات.

لنفترض أن لدي الرمز التالي في حزمة 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 ، لكنني بحاجة أيضًا إلى القيام بشيء عندما يجد فو بعض البيانات.

أريد إعادة استخدام الاستعلام في أماكن قليلة ، لكنني لا أعتقد أن هذا سيكون مرشحًا جيدًا للوجهة نظر.

ما هي أفضل طريقة لمعرفة ما إذا كان فو يجد شيئًا؟

شكرًا.

هل كانت مفيدة؟

المحلول

الطريقة الوحيدة لمعرفة ما إذا كان قد وجد شيئًا ما هو الجلب منه:

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