powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Использование CURSOR в SQL запросе
9 сообщений из 9, страница 1 из 1
Использование CURSOR в SQL запросе
    #39540506
Disa08_08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, возможно кто-то сталкивался с подобной проблеммой?
Есть SQL-код:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select cursor(with ctd as
    (select 1 aa, 2 b from dual
    union all
    select 1 aa, 2 b from dual
    union all
    select 1 aa, 2 b from dual
        union all
    select 2 aa, 3 b from dual
        union all
    select 4 aa, 1 b from dual
        union all
    select 2 aa, 1 b from dual)
    select c.aa,count(c.aa)  cnt_ from ctd c
    group by c.aa
    having  not (grouping(c.aa) = 1)) "test" from dual 



При выполнении получаю ошибку (во вложении).
Если убрать having, т. е.:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select cursor(with ctd as
    (select 1 aa, 2 b from dual
    union all
    select 1 aa, 2 b from dual
    union all
    select 1 aa, 2 b from dual
        union all
    select 2 aa, 3 b from dual
        union all
    select 4 aa, 1 b from dual
        union all
    select 2 aa, 1 b from dual)
    select c.aa,count(c.aa)  cnt_ from ctd c
    group by c.aa
   ) "test" from dual; 


То все отрабатывает.
Возможно, кто-то знает или может направить, в сторону чего думать? Спасибо!
...
Рейтинг: 0 / 0
Использование CURSOR в SQL запросе
    #39540520
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Баг. На 12.1 падает на этапе построения плана запроса. Видимо cursor в SQL + group by having + grouping это overhead для оптимизатора. Трассировку снять нет возможности. На livesql, где 12.2, тоже падает с ошибкой.
...
Рейтинг: 0 / 0
Использование CURSOR в SQL запросе
    #39540524
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadНа livesql, где 12.2, тоже падает с ошибкой.Он вообще с курсорами как-то странно себя ведет. При попытке выполнить
Код: plsql
1.
2.
select cursor(select * from dual)
from dual


говорит ORA-00932: inconsistent datatypes: expected CHAR got CURSOR.
...
Рейтинг: 0 / 0
Использование CURSOR в SQL запросе
    #39540541
Disa08_08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,

Попробовал твой скрипт, отработал без ошибок.
Версия Oracle:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
...
Рейтинг: 0 / 0
Использование CURSOR в SQL запросе
    #39540567
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Disa08_08,

Тут дело не в БД, а особенности livesql.
...
Рейтинг: 0 / 0
Использование CURSOR в SQL запросе
    #39540568
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadAmKadНа livesql, где 12.2, тоже падает с ошибкой.Он вообще с курсорами как-то странно себя ведет. При попытке выполнить
Код: plsql
1.
2.
select cursor(select * from dual)
from dual


говорит ORA-00932: inconsistent datatypes: expected CHAR got CURSOR.

где пробуете?

на апексе слетает не понимает cursor

в pl/sql курсор проглатывает, но с grouping 500 Internal Server Error

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare
 cursor c1 is 
select cursor(
select 
  deptno
 ,sum(sal) s
from emp
group by deptno
having not(grouping(deptno) = 1)
) c from dual;
begin
 open c1;
 close c1;
 null;
end;



ps
я раньше ф-цію grouping использовал в сочитании с grouping sets/rollup


.....
stax
...
Рейтинг: 0 / 0
Использование CURSOR в SQL запросе
    #39540569
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadDisa08_08,

Тут дело не в БД, а особенности livesql.

что такое livesql?

блок pl/sql на сервере выполняется, кокое ему дело до особенностей livesql

.....
stax
...
Рейтинг: 0 / 0
Использование CURSOR в SQL запросе
    #39540574
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

с простым having оно работает, сносит из-за grouping

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare
 cursor c1 is 
select cursor(
select 
  deptno
 ,sum(sal) s
from emp
group by deptno
having count(*) > 0 --not(grouping(deptno) = 1)
) c from dual;
begin
 open c1;
 close c1;
 null;
end;



.....
stax
...
Рейтинг: 0 / 0
Использование CURSOR в SQL запросе
    #39540576
Disa08_08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

PL sql developer.
Да, без grouping и просто в sql проглатывает нормально.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Использование CURSOR в SQL запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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