Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не могу отсортировать PL/SQL-таблицу / 22 сообщений из 22, страница 1 из 1
13.03.2017, 11:00
    #39417906
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
Буду краток.
Package Specification "PKG":
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
   TYPE systemRec IS RECORD
   (
      ID          INTEGER,
      Code        VARCHAR2 (1024),
      W           INTEGER,
      H           INTEGER,
      components  tblComponents --  TYPE tblComponents IS TABLE OF componentRec INDEX BY PLS_INTEGER;
   );

   TYPE tblSystems IS TABLE OF systemRec;


Тестовая процедура:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
  DECLARE
    nosorted     PKG.tblSystems;
    sorted       PKG.tblSystems;
  BEGIN
      -- инициализация (проходит успешно - проверено циклом по всем элементам for i in nosorted.FIRST .. nosorted.LAST ... и т.д. )
      nosorted := PKG.GetSystems;

      -- точка возникновения ошибки:
      SELECT CAST (MULTISET (  SELECT * FROM TABLE (nosorted) ORDER BY 1) AS PKG.tblSystems) INTO sorted FROM DUAL;


Ошибка:
Код: html
1.
PL/SQL: ORA-00902: неверн.тип данных
...
Рейтинг: 0 / 0
13.03.2017, 11:16
    #39417912
Не могу отсортировать PL/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.
Connected to Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 

SQL> set serveroutput on size unlimited
SQL> 
SQL> create or replace package pkg as
  2     TYPE systemRec IS RECORD
  3     (
  4        ID          INTEGER,
  5        Code        VARCHAR2 (1024),
  6        W           INTEGER,
  7        H           INTEGER--,
  8        --components  tblComponents --  TYPE tblComponents IS TABLE OF componentRec INDEX BY PLS_INTEGER;
  9     );
 10  
 11     TYPE tblSystems IS TABLE OF systemRec;
 12  end;
 13  /
Package created
SQL> DECLARE
  2      nosorted     PKG.tblSystems;
  3      sorted       PKG.tblSystems;
  4  BEGIN
  5      -- инициализация (проходит успешно - проверено циклом по всем элементам for i in nosorted.FIRST .. nosorted.LAST ... и т.д. )
  6      nosorted := PKG.tblSystems();
  7      nosorted.extend(2);
  8      nosorted(1).id := 2;
  9      nosorted(2).id := 1;
 10      -- точка возникновения ошибки:
 11      SELECT t.* bulk collect INTO sorted FROM TABLE (nosorted) t ORDER BY t.id ;
 12  
 13      dbms_output.put_line(sorted(1).id);
 14      dbms_output.put_line(sorted(2).id);
 15  end;
 16  /
1
2
PL/SQL procedure successfully completed
...
Рейтинг: 0 / 0
13.03.2017, 11:18
    #39417915
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
КурдльБуду краток.STFF/RTFM More PL/SQL-Only Data Types Can Cross PL/SQL-to-SQL Interface
Курдль
Код: plsql
1.
SELECT CAST (MULTISET (  SELECT * FROM TABLE (nosorted) ORDER BY 1) AS PKG.tblSystems) INTO sorted FROM DUAL;

Код: plsql
1.
SELECT * BULK COLLECT INTO sorted FROM TABLE (nosorted) ORDER BY 1;
...
Рейтинг: 0 / 0
13.03.2017, 11:19
    #39417917
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
Сегодня добр,

Гениально, коллега! :)
...
Рейтинг: 0 / 0
13.03.2017, 11:38
    #39417930
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
КурдльСегодня добр,

Гениально, коллега! :)
Но не работает :(

В дизайн-тайме TOAD выдает предупреждение
Код: html
1.
oracle rule-4812 SELECT_BULK-COLLECT (implict bulk query) or SELECT_BULK-COLLECT without LIMIT clause cloud cause problem with session memory if too many rows are retrieved


Однако в моем примере извлекается около 20 строк.
А при попытке выполнить выдает ошибку:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ORA-00603: ORACLE server session terminated by fatal error
ORA-06550: line 0, column 0:
PLS-00801: внутр.ошибка [60816]
ORA-06550: line 11, column 43:
PL/SQL: ORA-00600: код внутренней ошибки, аргументы: [kghfrf1], [0x0], [], [], [], [], [], [], [], [], [], []
ORA-00600: код внутренней ошибки, аргументы: [17182], [0xF96AAFC], [], [], [], [], [], [], [], [], [], []
ORA-06544: PL/SQL: вн
ORA-06550: line 11, column 6:
PL/SQL: SQL Statement ignored
Идентификатор процесса: 6796
Идентификатор сеанса: 14 Порядковый номер: 208
...
Рейтинг: 0 / 0
13.03.2017, 11:43
    #39417939
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
Курдль
Код: html
1.
PL/SQL: ORA-00600: код внутренней ошибки, аргументы: [kghfrf1], [0x0], [], [], [], [], [], [], [], [], [], []

Синтаксическая сахарная магия споткнулась о, скажем, tblComponents.
...
Рейтинг: 0 / 0
13.03.2017, 11:54
    #39417949
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
ElicСинтаксическая сахарная магия споткнулась о, скажем, tblComponents.
Я понял суть не всех слов из Вашего ответа :(
Отказаться от вложенной таблицы?..
...
Рейтинг: 0 / 0
13.03.2017, 13:25
    #39418049
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
Сегодня добрКурдль,

Код: plsql
1.
 11      SELECT t.* bulk collect INTO sorted FROM TABLE (nosorted) t ORDER BY t.id ;



Кстати, Ваш пример в чистом виде (как Вы его прислали) не работает. Ошибка в строке 11:
Код: html
1.
ORA-21700: объект не существует или помечен для удаления
...
Рейтинг: 0 / 0
13.03.2017, 13:29
    #39418055
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
КурдльКстати, Ваш пример в чистом виде (как Вы его прислали) не работает. Ошибка в строке 11:Это исключительно твои личные проблемы.
...
Рейтинг: 0 / 0
13.03.2017, 13:43
    #39418078
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
ElicЭто исключительно твои личные проблемы.
Естественно! Поэтому я обращаюсь за помощью к более опытным специалистам, а не они ко мне.
Я не смог устранить проблему, воспользовавшись вышеприведенными советами. После этого исполнил скрипт 20288569 (вроде как успешный) на своей среде в TOAD и sqlplus, дважды получив ошибку.
Возможно у нас среды разные? У меня oracle 11.2 SE
...
Рейтинг: 0 / 0
13.03.2017, 13:47
    #39418084
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
Ну тогда внимательно посмотри на этот скрипт с самого начала

И сходи все-таки по ссылочке
...
Рейтинг: 0 / 0
13.03.2017, 13:51
    #39418085
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
Вячеслав ЛюбомудровНу тогда внимательно посмотри на этот скрипт с самого начала

И сходи все-таки по ссылочке
Да... Вот это я пропустил:
Код: html
1.
Connected to Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 

:/
Признаю свою ошибку и понуро иду по ссылочке.
...
Рейтинг: 0 / 0
13.03.2017, 14:34
    #39418136
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
Вячеслав ЛюбомудровИ сходи все-таки по ссылочке
По ссылочке сходил - решения не нашел :(
Может ткнёте меня носом прямо в него?
...
Рейтинг: 0 / 0
13.03.2017, 14:42
    #39418141
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
КурдльМожет ткнёте меня носом прямо в него?Глаза не разул?Changes in Oracle Database 12c Release 1 (12.1)
...
Рейтинг: 0 / 0
13.03.2017, 14:45
    #39418144
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
ElicГлаза не разул?Changes in Oracle Database 12c Release 1 (12.1)
А, это! Я понял с 1-го раза, почему не сработал тот пример.
Но мне нужно решение, а не понимание проблемы. Что делать с сортировкой nested table в 11g?
...
Рейтинг: 0 / 0
13.03.2017, 14:49
    #39418147
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
КурдльНо мне нужно решение, а не понимание проблемы. Что делать с сортировкой nested table в 11g?Писать код и не выёживаться.
Код: plsql
1.
index by varchar2(100)

...
Рейтинг: 0 / 0
13.03.2017, 14:54
    #39418152
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
ElicКурдльНо мне нужно решение, а не понимание проблемы. Что делать с сортировкой nested table в 11g?Писать код и не выёживаться.
Код: plsql
1.
index by varchar2(100)


Мне нужна сортировка по не_уникальному полю :(
...
Рейтинг: 0 / 0
13.03.2017, 14:58
    #39418158
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
КурдльМне нужна сортировка по не_уникальному полю :(Если мозги есть, то это не проблема.
...
Рейтинг: 0 / 0
13.03.2017, 15:01
    #39418159
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
ElicКурдльМне нужна сортировка по не_уникальному полю :(Если мозги есть, то это не проблема.
Написать процедуру сортировки?
Это не проблема. Проблема - изобретать велосипед, если он уже изобретен.
...
Рейтинг: 0 / 0
13.03.2017, 15:07
    #39418164
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
КурдльНаписать процедуру сортировки?Нет.
Даже неуникальные индексы в Oracle-е лежат уникально отсортировано.
...
Рейтинг: 0 / 0
13.03.2017, 17:08
    #39418278
Очень жду
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу отсортировать PL/SQL-таблицу
Курдль , напиши уже что-нибудь. Не могу смотреть на твое суммарное кол-во сообщений.
...
Рейтинг: 0 / 0
13.03.2017, 17:30
    #39418293
Не могу отсортировать PL/SQL-таблицу
Очень жду,

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


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