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

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

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

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

fetch кур into переменные...
...
Рейтинг: 0 / 0
Как разобрать курсор который возвращает хранимая процедура
    #39433614
Prog_sql1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А каким типом должна быть переменная переменные... ?
...
Рейтинг: 0 / 0
Как разобрать курсор который возвращает хранимая процедура
    #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
Как разобрать курсор который возвращает хранимая процедура
    #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
Как разобрать курсор который возвращает хранимая процедура
    #39433686
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Prog_sql1,
ты запись фетчишь в строку
...
Рейтинг: 0 / 0
Как разобрать курсор который возвращает хранимая процедура
    #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
Как разобрать курсор который возвращает хранимая процедура
    #39433699
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKaddbms_sql.
...
Рейтинг: 0 / 0
Как разобрать курсор который возвращает хранимая процедура
    #39433705
Prog_sql1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XMLer,

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


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