powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle Database 12c. Новые возможности языка SQL
25 сообщений из 234, страница 8 из 10
Oracle Database 12c. Новые возможности языка SQL
    #38343605
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishправило, если ляля - синтаксически корректный запрос, то и
Код: plsql
1.
 select * from ( ляля )

- тоже корректный запрос.
продержалось со времен oracle 8.0
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> select d1.dummy, d2.dummy from dual d1, dual d2;

D D
- -
X X

SQL> select * from (select d1.dummy, d2.dummy from dual d1, dual d2);
select * from (select d1.dummy, d2.dummy from dual d1, dual d2)
       *
ERROR at line 1:
ORA-00918: column ambiguously defined
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38343612
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicorawishправило, если ляля - синтаксически корректный запрос, то и
Код: plsql
1.
 select * from ( ляля )

- тоже корректный запрос.
продержалось со времен oracle 8.0
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> select d1.dummy, d2.dummy from dual d1, dual d2;

D D
- -
X X

SQL> select * from (select d1.dummy, d2.dummy from dual d1, dual d2);
select * from (select d1.dummy, d2.dummy from dual d1, dual d2)
       *
ERROR at line 1:
ORA-00918: column ambiguously defined


да, да, конечно. про ORA-00918 я напрасно не сказал (тупо забыл)
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38343624
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonellyНе стало ли возможным делать запрос из REF CURSOR?fetch into
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38343628
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

+
но с
Код: plsql
1.
ORA-00918: column ambiguously defined


всё очевидно, в том смысле, что оговорка (не должно быть неопределенности ..) - имхо, оговорка вменяемая
(и разумеется, на практике - таки стреляет она нередко ;)
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38343651
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender
плюсик поставь, чтобы вторая строка появилась...
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT n,yv
  FROM (SELECT XMLTYPE('<q><x n="1"><y>1-1</y></x><x n="2"/></q>') x from dual) q1,
       XMLTABLE('/q/x' PASSING q1.x
        COLUMNS n PATH '@n',
                x XMLTYPE PATH '/*') q2,
       XMLTABLE('/x/y' PASSING q2.x
        COLUMNS yv PATH '/*')(+) q3
/


Ы. Старею...
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38343656
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishно с
Код: plsql
1.
ORA-00918: column ambiguously defined


всё очевидно, в том смысле, что оговорка (не должно быть неопределенности ..) - имхо, оговорка вменяемая
Еще, помнится, время назад были сложности с order by...
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38343667
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousorawishно с
Код: plsql
1.
ORA-00918: column ambiguously defined


всё очевидно, в том смысле, что оговорка (не должно быть неопределенности ..) - имхо, оговорка вменяемая
Еще, помнится, время назад были сложности с order by...
ага (ну, про них то я упомянуть не забыл - 14615649 :)
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38343867
antonelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-antonellyНе стало ли возможным делать запрос из REF CURSOR?fetch into
FETCH INTO неудобен тем, что нужно знать все поля, содержащиеся в курсоре. И явно их перечислять, и поддерживать этот список в актуальном состоянии. Ну нельзя-значит нельзя, будем ждать Oracle 13
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38343912
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonelly-2-пропущено...
fetch into
FETCH INTO неудобен тем, что нужно знать все поля, содержащиеся в курсоре. И явно их перечислять, и поддерживать этот список в актуальном состоянии. Ну нельзя-значит нельзя, будем ждать Oracle 13
имхо, не дождётесь.
не для этого рефкусор предназначен. собственно, и фетчить его на стороне сервера - уже изврат изрядный, ну да ладно.
была такая тётя - пенелоппа - двадцать лет по ночам распускала то, что за день соткала.
вот эта сказочка про вас. хренли клеить, что уже порезали, чтобы снова потом клеить?
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38343915
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonelly-2-пропущено...
fetch into
FETCH INTO неудобен тем, что нужно знать все поля, содержащиеся в курсоре. И явно их перечислять, и поддерживать этот список в актуальном состоянии. Ну нельзя-значит нельзя, будем ждать Oracle 13Давай разберем претензии на твоем же примере:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
function get_name_from_cursor(ip_cursor SYS_REFCURSOR) RETURN SYS_REFCURSOR as
 l_res SYS_REFCURSOR;
begin
 open l_res for 
 select first_name, last_name from TABLE(ip_cursor);
 return l_res;
end;
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38343952
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonellyнужно знать все поля, содержащиеся в курсоре. И явно их перечислять, и поддерживать этот список в актуальном состоянии.
http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/dynamic.htm
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344027
antonelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-antonellyпропущено...

FETCH INTO неудобен тем, что нужно знать все поля, содержащиеся в курсоре. И явно их перечислять, и поддерживать этот список в актуальном состоянии. Ну нельзя-значит нельзя, будем ждать Oracle 13Давай разберем претензии на твоем же примере:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
function get_name_from_cursor(ip_cursor SYS_REFCURSOR) RETURN SYS_REFCURSOR as
 l_res SYS_REFCURSOR;
begin
 open l_res for 
 select first_name, last_name from TABLE(ip_cursor);
 return l_res;
end;


Я имел в виду все поля в курсоре вообще, а не только те, которые нужны в данной процедуре. Например, если там еще есть поля email, phone, gender и еще дофига, их все равно надо явно куда-то заселектить.
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344078
antonelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..,

А вот такой запрос сработает в 12с:
Код: plaintext
1.
2.
3.
4.
5.
select 
(
select dummy z from 
(select dummy y from dual where dummy=d.dummy)
) z
from dual d
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344086
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonelly,

матчасть учите. покамест - вы даже сути вещей не понимаете.
ну а в качестве бонуса - там сказано и про то, как ваши хотелки (повторюсь, ненормальные ) через вёрсты лесом, но таки реализовать
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344190
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishматчасть учите. покамест - вы даже сути вещей не понимаете.
ну а в качестве бонуса - там сказано и про то, как ваши хотелки (повторюсь, ненормальные ) через вёрсты лесом, но таки реализовать

Матчасть учил:

Oracle performs a correlated subquery when a nested subquery references a column from a table referred to a parent statement one level above the subquery . Но как уже случалось в прошлых версиях в 12C про это опять забыли :

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SQL> select  *
  2    from  v$version
  3  /

BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0
PL/SQL Release 12.1.0.1.0 - Production                                                    0
CORE    12.1.0.1.0      Production                                                                0
TNS for 64-bit Windows: Version 12.1.0.1.0 - Production                                   0
NLSRTL Version 12.1.0.1.0 - Production                                                    0

SQL> select (select dummy z from (select dummy y from dual where dummy=d.dummy)) z from dual d
  2  /

Z
-
X

SQL>



SY.
P.S. Было-бы непрохо если бы забыли напрочь .
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344196
Фотография Sacramento
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ламаюца устои как 10-летние привычки. То что вчера доказывали логически почему нельзя делать, сегодня делаецо само по себе.
Надо было подготовиццо как-то морально, иначе культурный шок обеспечен. Зажогсо огонек надежды об ампутации мутации триггеров на инсерте типа IIS, классика как ее тут назвали
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344197
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonellystax..,

А вот такой запрос сработает в 12с:
Код: plaintext
1.
2.
3.
4.
5.
select 
(
select dummy z from 
(select dummy y from dual where dummy=d.dummy)
) z
from dual d

к сожленью, нет у меня 12-ки

но, надеюсь что отработает

.....
stax
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344235
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SY,

магия
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SQL> var c clob
SQL> exec dbms_utility.expand_sql_text('select (select dummy z from (select dummy y from dual where dummy=d.dummy)) z from dual d',:c);

PL/SQL procedure successfully completed.

SQL> print c

C
-----------------------------------------------------------------------------------------------------------------------------------------------
SELECT  (SELECT "A1"."DUMMY" "Z" FROM  (SELECT "A3"."DUMMY" "Y" FROM "SYS"."DUAL" "A3" WHERE "A3"."DUMMY"=:B1) "A2") "Z" FROM "SYS"."DUAL" "A1"

...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344244
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
нифига expand_sql не сходится c 10053
Код: plsql
1.
2.
Final query after transformations:******* UNPARSED QUERY IS *******
SELECT  (SELECT "D"."DUMMY" "Z" FROM "SYS"."DUAL" "DUAL" WHERE "DUAL"."DUMMY"="D"."DUMMY") "Z" FROM "SYS"."DUAL" "D"

...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344256
antonelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishтам сказано и про то, как ваши хотелки (повторюсь, ненормальные ) через вёрсты лесом, но таки реализовать

ok, буду премного благодарен за ссылку.
Те есть запрос. Нужно в него добавить еще одно поле, которое вычисляется сложным запросом на основе полей, которые возвращает первый запрос. С минимальной вероятностью сломать то, что уже работает. Как профессионалы советуют это делать?Я бы запихнул второй запрос в функцию, благо в 12 g ee можно объявить на уровне запроса, а не схемы. Или есть лучший способ?

А насчет рефкрсора-может это и изврат из него селектить, но у нас уже есть куча легаси-функций, которые возвращают именно рефкурсор. Функции написаны отвратно, редактировать их сложно, долго, и опасно, тк можно сломать то, что уже работает. Поэтому было бы удобно написать обертку, которая вызывает такую функцию, и добавляет/удаляет из результата некоторые поля.
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344284
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYМатчасть учил:
..
P.S. Было-бы непрохо если бы забыли напрочь
+1

ps (для ясности) тут кнопка влезла. про матчасть - это я к
antonellyНе стало ли возможным делать запрос из REF CURSOR?
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344297
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antonellyorawishтам сказано и про то, как ваши хотелки (повторюсь, ненормальные ) через вёрсты лесом, но таки реализовать

ok, буду премного благодарен за ссылку.
Те есть запрос. Нужно в него добавить еще одно поле, которое вычисляется сложным запросом на основе полей, которые возвращает первый запрос. С минимальной вероятностью сломать то, что уже работает. Как профессионалы советуют это делать?Я бы запихнул второй запрос в функцию, благо в 12 g ee можно объявить на уровне запроса, а не схемы. Или есть лучший способ?

А насчет рефкрсора-может это и изврат из него селектить, но у нас уже есть куча легаси-функций, которые возвращают именно рефкурсор. Функции написаны отвратно, редактировать их сложно, долго, и опасно, тк можно сломать то, что уже работает. Поэтому было бы удобно написать обертку, которая вызывает такую функцию, и добавляет/удаляет из результата некоторые поля.
ну, плохо. я совсем не против рефкурсоров (и даже глубоко за ) ,но только когда используются они по назначению .
у вас же задача - модифицировать запрос , на основе которого кто-то до вас строил (и построил) рефкурсор.
разницу понимаете? фарш проворачивать "назад" - последнее дело. менять подход вам надо. работать с запросами
(с их исходными текстами и переменными привязки, а не с их экскрементами).
ну а ссылку на динамический эскуэль вам уже дали выше
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344304
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishссылку на динамический эскуэль вам уже дали выше
Вообще я давал ссылку на преобразование ref в dbms_sql и обратно - типа структуру ref cursor в динамике посмотреть, чтобы не "держать в актуальном состоянии" списки полей и все такое... хотя, почитав дальнейшее, ссылку давать бы уже не стал - у коллеги в голове все еще структурное программирование, не навредить бы...
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344308
antonelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот из описания не понял, что вернет следующий запрос:

SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 ROWS ONLY

Он вернет первые 10 емплоёв, или ВСЕХ эмплоёв, которые получают 10 самых больших зарплат?

И что с этой точки зрения вернет запрос с WITH TIES:

SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 ROWS ONLY WITH TIES;

Кто-н уже экспериментировал с этим?
...
Рейтинг: 0 / 0
Oracle Database 12c. Новые возможности языка SQL
    #38344311
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderмагия

Да это я знаю. Вопрос в том как постоянно такое поведение. То-же самое было в какой-то из версий 10G а потом пропало.

SY.
...
Рейтинг: 0 / 0
25 сообщений из 234, страница 8 из 10
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle Database 12c. Новые возможности языка SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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