Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да получите добре форматирани резултати от процедура на Oracle, която връща референтен курсор?

Ако GetQuestions е функция, връщаща рекурсор, който изглежда е това, което имате във версията на SQL Server, тогава по-скоро може да сте в състояние да направите нещо подобно:

select * from table(MyPackage.GetQuestions('OMG Ponies'));

Или ако имате нужда от него в PL/SQL блок, тогава можете да използвате същия избор в курсора.

Можете също така да накарате функцията да генерира dbms_output вместо това оператори, така че те винаги да са достъпни за отстраняване на грешки, въпреки че това добавя малко допълнителни разходи.

Редактиране

Хммм, не съм сигурен, че е възможно да се cast() върнатият рекурсор към използваем тип, освен ако не желаете да декларирате свой собствен тип (и таблица от този тип) извън пакета. Можете обаче да направите това, само за да изхвърлите резултатите:

create package mypackage as
    function getquestions(user in varchar2) return sys_refcursor;
end mypackage;
/

create package body mypackage as
    function getquestions(user in varchar2) return sys_refcursor as
        r sys_refcursor;
    begin
        open r for
            /* Whatever your real query is */
            select 'Row 1' col1, 'Value 1' col2 from dual
            union
            select 'Row 2', 'Value 2' from dual
            union
            select 'Row 3', 'Value 3' from dual;
            return r;
    end;
end mypackage;
/

var r refcursor;
exec :r := mypackage.getquestions('OMG Ponies');
print r;

И можете да използвате резултата от повикването в друга процедура или функция; просто стигането до него извън PL/SQL изглежда е малко сложно.

Редактирано за добавяне: С този подход, ако това е процедура, можете да направите по същество същото нещо:

var r refcursor;
exec mypackage.getquestions(:r, 'OMG Ponies');
print r;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Въведение в архивирането на базата данни на Oracle

  2. Създайте електронна таблица на Excel от база данни на Oracle

  3. Пример за външна таблица на Oracle

  4. Как да експортирате резултата от заявката в csv в Oracle SQL Developer?

  5. Екраниращ знак амперсанд в SQL низ