powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Декларация курсора в user type
25 сообщений из 72, страница 2 из 3
Декларация курсора в user type
    #39483539
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..про только не понялЕщё раз: нет SQL типа данных "курсор", потому что это абстракция уровня Call Interface.
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483560
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicstax..про только не понялЕщё раз: нет SQL типа данных "курсор", потому что это абстракция уровня Call Interface.

мне ету абстракцию не понять
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  1  declare
  2   v varchar2(40);
  3   rc sys_refcursor;
  4   cursor c is select cursor(select dname from dept) c from dual;
  5  begin
  6    open c;
  7    fetch c into rc;
  8    fetch rc into v;
  9    dbms_output.put_line(v);
 10    close rc;
 11    close c;
 12* end;
SQL> /
ACCOUNTING

PL/SQL procedure successfully completed.



какого типа асстракция с?

.....
stax
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483599
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..,

SQL reference -> CURSOR Expression ..
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483636
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envstax..,

SQL reference -> CURSOR Expression ..

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
FeedbackDownload
Share to:
Share to FacebookShare to TwitterShare to EmailShare to PrintShare to GmailShare to More2
Categories
Home
Master Index
Master Glossary
CURSOR Expressions
A CURSOR expression returns a nested cursor. This form of expression is equivalent to the PL/SQL REF CURSOR and can be passed as a REF CURSOR argument to a function.


и что? returns a nested cursor, который поддерживается в sql

напр неподдержки, return boolean даст ошибку, не поддерживается в SQL

.....
stax
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483648
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..,

Игра слов. Nested cursor - не тип данных.
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483660
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..какого типа асстракция с?Я выше попытался спросить у dump-а, но он мне не ответил .
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483663
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envstax..,

Игра слов. Nested cursor - не тип данных.

expression какого типа?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
  1  declare
  2   v varchar2(40);
  3   rc number; --sys_refcursor;
  4   cursor c is select cursor(select dname from dept) c from dual;
  5  begin
  6    open c;
  7    fetch c into rc;
  8  --  fetch rc into v;
  9    dbms_output.put_line(v);
 10  --  close rc;
 11    close c;
 12* end;
SQL> /
  fetch c into rc;
               *
ERROR at line 7:
ORA-06550: line 7, column 16:
PLS-00386: type mismatch found at 'RC' between FETCH cursor and INTO variables
ORA-06550: line 7, column 3:
PL/SQL: SQL Statement ignored



cursor c is select cursor(select dname from dept) cur from dual;

у cur какой тип? игра слов?

.....
stax
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483684
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadstax..какого типа асстракция с?Я выше попытался спросить у dump-а, но он мне не ответил .
Restrictions on CURSOR Expressions
The following restrictions apply to CURSOR expressions:

If the enclosing statement is not a SELECT statement, nested cursors can appear only as REF CURSOR arguments of a procedure.

імхо, dump не перегружаєтся для "REF CURSOR"

Код: plsql
1.
2.
3.
4.
5.
SQL> select dump(cursor(select * from dual)) d from dual;
select dump(cursor(select * from dual)) d from dual
            *
ERROR at line 1:
ORA-22902: CURSOR expression not allowed



.....
stax
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483685
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..,

Код: plsql
1.
2.
3.
4.
select dump(cursor(select dummy from dual)) cur from dual;

22902. 00000 -  "CURSOR expression not allowed"
*Cause:    CURSOR on a subquery is allowed only in the top-level


expression, Стас, expression, интерпретируемое далее
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483708
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadstax..какого типа асстракция с?Я выше попытался спросить у dump-а, но он мне не ответил .А dbms_sql пробовал? :)
stax..expression какого типа?Если прочитать мой ответ выше, то можно перейти по ссылке и попасть на Example 6-34 CURSOR Expression.
А еще можно открыть доку по XMLtype и увидеть

Код: plaintext
1.
2.
3.
4.
5.
constructor function XMLType(
   xmlData IN SYS_REFCURSOR,
   schema in varchar2 := NULL,
   element in varchar2 := NULL,
   validated in number := 0)
return self as result deterministic;

Код: plaintext
1.
2.
3.
4.
5.
select xmltype(xmldata   => cursor (select rownum id from dual connect by level <= 2),
               schema    => null,
               element   => null,
               validated => 0) x
  from dual
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483709
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envstax..,

Код: plsql
1.
2.
3.
4.
select dump(cursor(select dummy from dual)) cur from dual;

22902. 00000 -  "CURSOR expression not allowed"
*Cause:    CURSOR on a subquery is allowed only in the top-level


expression, Стас, expression, интерпретируемое далееУ результата expression всегда есть тип.
Собственно cursor expression хороший пример когда цель объяснить отличия SQL vs PL/SQL static SQL.
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483713
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopА dbms_sql пробовал? :)Нет. Поленился.
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483718
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..какого типа асстракция с?Попробуй об этом спросить у SQL посредством:
dump

create view

Только http://www.oracle.com/pls/topic/lookup?ctx=db112&id=LNOCI16427]OCI provides the ability to bind and define PL/SQL REF CURSORs
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483737
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopУ результата expression всегда есть тип.


вот я и спрашиваю какой тип у етого конкретного expression?
імхо, ref cursor, который поддерживается в sql

напр bollean в ораклячем sql пока не поддерживается

.....
stax
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483742
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..вот я и спрашиваю какой тип у етого конкретного expression?Когда спрашиваешь - имеет смысл читать ответы.
stax..імхо, ref cursor, который поддерживается в sqlНу покажи как ты из него отфетчишь данные.
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483743
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicТолько http://www.oracle.com/pls/topic/lookup?ctx=db112&id=LNOCI16427]OCI provides the ability to bind and define PL/SQL REF CURSORs
Правильнее - "OCI тоже может".
И Java может. http://docs.oracle.com/database/122/TDPJD/GUID-21E2370C-4D07-492D-8276-936DB7122D0F.htm#TDPJD218
И .Net http://docs.oracle.com/database/122/ODPNT/featImplRefCursor.htm#ODPNT329
Да и pl/sql не откажется.
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483744
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopНу покажи как ты из него отфетчишь данные.
Дык через table() же, не?
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483757
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousИ Java может.Это параллельный Call Interface.andrey_anonymousИ .NetНасколько я понимаю, это всё равно через OCI.
andrey_anonymousДа и pl/sql не откажется.Это, грубо говоря, почти тот же OCI.
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483759
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopstax..вот я и спрашиваю какой тип у етого конкретного expression?Когда спрашиваешь - имеет смысл читать ответы.
stax..імхо, ref cursor, который поддерживается в sqlНу покажи как ты из него отфетчишь данные.

кроме читать ответы, их еще желательно понять, с чем у меня проблем

Код: 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.
SQL> ed
Wrote file afiedt.buf

  1  declare
  2   v varchar2(100);
  3   sr sys_refcursor;
  4   cursor c is select dname,(cursor(select ename
  5               from emp e where e.deptno=d.deptno)) r from dept d;
  6  begin
  7   open c;
  8   loop
  9    fetch c into v,sr;
 10    EXIT WHEN c%NOTFOUND;
 11    dbms_output.put_line(v);
 12     loop
 13        FETCH sr INTO v;
 14        EXIT WHEN sr%NOTFOUND;
 15        dbms_output.put_line('--- '||v);
 16     end loop;
 17     close sr;
 18   end loop;
 19   close c;
 20* end;
SQL> /
ACCOUNTING
--- CLARK
--- KING
--- MILLER
RESEARCH
--- SMITH
--- JONES
--- SCOTT
--- ADAMS
--- FORD
SALES
--- ALLEN
--- WARD
--- MARTIN
--- BLAKE
--- TURNER
--- JAMES
OPERATIONS

PL/SQL procedure successfully completed.



....
stax
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483762
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousdbms_photoshopНу покажи как ты из него отфетчишь данные.
Дык через table() же, не?

кинул пример, но мож я вопрос/ответ не понимаю

....
stax
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483764
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

пример когда тонко не осі?

.....
stax
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483769
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..пример когда тонко не осі?Попробуй перефразировать по-русски.
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483774
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopСобственно cursor expression хороший пример когда цель объяснить отличия SQL vs PL/SQL static SQL.
stax..ref cursor, который поддерживается в sql
stax..PL/SQL procedure successfully completed.
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483777
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicstax..пример когда тонко не осі?Попробуй перефразировать по-русски.
пример где ОСИ не использовалось?
о ком нельзя сказать "грубо говоря, почти тот же OCI."

....
stax
...
Рейтинг: 0 / 0
Декларация курсора в user type
    #39483787
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopdbms_photoshopСобственно cursor expression хороший пример когда цель объяснить отличия SQL vs PL/SQL static SQL.
stax..ref cursor, который поддерживается в sql
stax..PL/SQL procedure successfully completed.
не понял

намекаете что ето PL/SQL?

я утверждаю что ref corsor тип который поддерживается в sql и pl/sql

пример не поддерживаемого типа в sql boolean;

ps
к стати, целостность на момент открытия выражения, а не старта селекта (аля ф-ция)
Код: 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.
SQL> ed
Wrote file afiedt.buf

  1  declare
  2   e sys_refcursor;
  3   cursor c1 is select e from dual;
  4  begin
  5   open c1;
  6   close c1;
  7* end;
SQL> /

PL/SQL procedure successfully completed.

SQL> ed
Wrote file afiedt.buf

  1  declare
  2   e boolean;
  3   cursor c1 is select e from dual;
  4  begin
  5   open c1;
  6   close c1;
  7* end;
SQL> /
 cursor c1 is select e from dual;
                     *
ERROR at line 3:
ORA-06550: line 3, column 22:
PLS-00382: expression is of wrong type


....
stax
...
Рейтинг: 0 / 0
25 сообщений из 72, страница 2 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Декларация курсора в user type
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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