Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как разобрать курсор который возвращает хранимая процедура / 13 сообщений из 13, страница 1 из 1
05.04.2017, 15:30
    #39433561
Prog_sql1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
Добрый день! Подскажите пожалуйста как разобрать курсор ( получить данные ), который мне возвращает хранимая процедура?
Пример

Begin
A$PAC.cursor(var111 varchar2(100), cur111 out nocopy trefcur)
end;

Где trefcur это
type trefcur is ref cursor;

Заранее спасибо.
...
Рейтинг: 0 / 0
05.04.2017, 15:30
    #39433562
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
dbms_sql.
...
Рейтинг: 0 / 0
05.04.2017, 15:58
    #39433599
Prog_sql1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
А можно было бы маленький пример?
...
Рейтинг: 0 / 0
05.04.2017, 16:01
    #39433606
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
Prog_sql1,

fetch кур into переменные...
...
Рейтинг: 0 / 0
05.04.2017, 16:12
    #39433614
Prog_sql1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
А каким типом должна быть переменная переменные... ?
...
Рейтинг: 0 / 0
05.04.2017, 16:35
    #39433634
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
Prog_sql1,

бистро подсмотреть мона в плюсе
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
SQL> ed
Wrote file afiedt.buf

  1  create or replace function f_refcursor(p varchar2 :='D')
  2  return sys_refcursor
  3  is
  4   cc sys_refcursor;
  5  begin
  6   case p
  7    when 'D' then open cc for select * from dept;
  8    when 'E' then open cc for select * from emp;
  9    else open cc for select * from dual;
 10    end case;
 11    return cc;
 12* end;
SQL> /

Function created.

SQL> var c refcursor
SQL> exec :c:=f_refcursor;

PL/SQL procedure successfully completed.

SQL> print c

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON


SQL> exec :c:=f_refcursor('E');

PL/SQL procedure successfully completed.

SQL> print c

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPT
---------- ---------- --------- ---------- -------- ---------- ---------- --------
      7369 SMITH      CLERK           7902 17.12.80        800
      7499 ALLEN      SALESMAN        7698 20.02.81       1600        300
      7521 WARD       SALESMAN        7698 22.02.81       1250        500
      7566 JONES      MANAGER         7839 02.04.81       2975
      7654 MARTIN     SALESMAN        7698 28.09.81       1250       1400
      7698 BLAKE      MANAGER         7839 01.05.81       2850
      7782 CLARK      MANAGER         7839 09.06.81       2450
      7788 SCOTT      ANALYST         7566 09.12.82       3000
      7839 KING       PRESIDENT            17.11.81       5000
      7844 TURNER     SALESMAN        7698 08.09.81       1500
      7876 ADAMS      CLERK           7788 12.01.83       1100
      7900 JAMES      CLERK           7698 03.12.81        950
      7902 FORD       ANALYST         7566 03.12.81       3000
      7934 MILLER     CLERK           7782 23.01.82       1300

14 rows selected.

SQL>


если програмно
смотрите в сторону to_cursor_number

ps
от версии тож зависит

.....
stax
...
Рейтинг: 0 / 0
05.04.2017, 17:06
    #39433656
Prog_sql1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
Ребята пишу вот так в девелопере


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare 
  type refcursor is ref cursor;
  refcur1        refcursor ;
  l_res          varchar2(1500);
  
begin
  A$PAC.cursor('num123' varchar2(100), cur111 out nocopy trefcur)
  loop
    fetch refcur1 into l_res;
    exit when refcur1%NOTFOUND;
    dbms_output.put_line(l_res);
  end loop;
  close refcur1;
end;



выходит ошибка.

ORA-06504: PL/SQL: Возвратные типы переменных Result Set или запроса не совпадают.

Что не так? Ни как не могу понять.
...
Рейтинг: 0 / 0
05.04.2017, 17:41
    #39433686
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
Prog_sql1,
ты запись фетчишь в строку
...
Рейтинг: 0 / 0
05.04.2017, 17:48
    #39433693
Prog_sql1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
Да я понимаю, что делаю что то не так. Но решение найти не могу. Вот и прошу помощи.
Вот сам курсор из хранимки.
Код: plsql
1.
2.
3.
open P_RESTCURSOR for 
			select  plp DEP_NUMBER, SUM SUM, 0 ERRORCODE, '' ERRORMSG
			from DUAL a1;
...
Рейтинг: 0 / 0
05.04.2017, 17:57
    #39433699
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
AmKaddbms_sql.
...
Рейтинг: 0 / 0
05.04.2017, 18:05
    #39433705
Prog_sql1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
XMLer,

подскажи, как с помощь этого механизма, можно достать данные.
...
Рейтинг: 0 / 0
05.04.2017, 18:57
    #39433728
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
Prog_sql1Да я понимаю, что делаю что то не так. Но решение найти не могу. Вот и прошу помощи.
Вот сам курсор из хранимки.
Код: plsql
1.
2.
3.
open P_RESTCURSOR for 
			select  plp DEP_NUMBER, SUM SUM, 0 ERRORCODE, '' ERRORMSG
			from DUAL a1;



Код: plsql
1.
2.
3.
   ...
    fetch refcur1 into v_DEP_NUMBER, v_SUM, v_ERRORCODE, v_ERRORMSG;
   ...



......
stax
...
Рейтинг: 0 / 0
05.04.2017, 21:12
    #39433778
Фанат Elic-a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как разобрать курсор который возвращает хранимая процедура
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
create or replace procedure ret_cur(p_vchr out varchar2, p_cur out sys_refcursor)
as
begin
  open p_cur for select level id from dual connect by level < 11;   
  p_vchr := 'Пупсик';
end;
/


set serveroutput on
declare
  l_cur   sys_refcursor;
  l_vchr  varchar2(100);
  l_num   number;
  
begin
  ret_cur(l_vchr, l_cur);
  
  loop
    fetch l_cur into l_num;
    exit when l_cur%notfound; 
    dbms_output.put_line('Топикстартер - ' || l_vchr || ' и это знает ' || l_num || ' чел.' );
  end loop;
end;
/



Prog_sql1 , извини меня пожалуйста, я не хотел.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как разобрать курсор который возвращает хранимая процедура / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]