powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не могу отсортировать PL/SQL-таблицу
22 сообщений из 22, страница 1 из 1
Не могу отсортировать PL/SQL-таблицу
    #39417906
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буду краток.
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
Не могу отсортировать PL/SQL-таблицу
    #39417912
Курдль,

Код: 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
Не могу отсортировать PL/SQL-таблицу
    #39417915
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльБуду краток.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
Не могу отсортировать PL/SQL-таблицу
    #39417917
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сегодня добр,

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

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

В дизайн-тайме 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
Не могу отсортировать PL/SQL-таблицу
    #39417939
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль
Код: html
1.
PL/SQL: ORA-00600: код внутренней ошибки, аргументы: [kghfrf1], [0x0], [], [], [], [], [], [], [], [], [], []

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

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



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

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

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

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

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


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

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


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