Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / CAST коллекции к пакетному типу / 10 сообщений из 10, страница 1 из 1
21.11.2019, 14:57
    #39892382
Vlad074
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CAST коллекции к пакетному типу
Привет всем.

Подскажите, CAST может приводить коллекцию к пакетному типу в SQL?

Пробую
Код: plsql
1.
SELECT CAST(MULTISET(SELECT FRUIT_NAME FROM FRUITS) AS TEST_PKG.TEST_VCHAR_NT) FROM DUAL


и получаю 'ORA-00902: invalid datatype' на TEST_PKG

Пробовал разные типы:
Код: plsql
1.
2.
3.
4.
CREATE OR REPLACE PACKAGE TEST_PKG AS
  TYPE TEST_VCHAR_AAT IS TABLE OF VARCHAR2(100) INDEX BY PLS_INTEGER;
  --TYPE TEST_VCHAR_NT IS TABLE OF VARCHAR2(100);
  TYPE TEST_VCHAR_NT IS TABLE OF FRUITS.FRUIT_NAME%TYPE; 



Если же приводить к типу схемы то все ОК, в чем причина?
...
Рейтинг: 0 / 0
21.11.2019, 14:59
    #39892386
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CAST коллекции к пакетному типу
Vlad074
в чем причина?
SQL-ю SQL-ево.
...
Рейтинг: 0 / 0
21.11.2019, 15:06
    #39892396
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CAST коллекции к пакетному типу
Vlad074,

bulk collect
...
Рейтинг: 0 / 0
22.11.2019, 06:22
    #39892648
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CAST коллекции к пакетному типу
Пакетный тип же в SQL нельзя использовать, только в PL/SQL.
Сделайте тип не в пакете а командой CREATE TYPE
...
Рейтинг: 0 / 0
22.11.2019, 14:34
    #39892940
Vlad074
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CAST коллекции к пакетному типу
Спасибо за ответы, но подыму тему:

Как преобразовать один тип коллекции к другой в тексте PL/SQL (например, ассоциативный массив в nested table)? Ну кроме способа пройтись в цикле.
Дано:
Код: plsql
1.
2.
3.
4.
CREATE OR REPLACE PACKAGE TEST_PKG AS
  TYPE TEST_VCHAR_AAT IS TABLE OF VARCHAR2(100) INDEX BY PLS_INTEGER;
  TYPE TEST_VCHAR_NT IS TABLE OF VARCHAR2(100);
END;


Код: plsql
1.
2.
3.
4.
5.
6.
DECLARE
  AA TEST_PKG.TEST_VCHAR_AAT;  
  NT TEST_PKG.TEST_VCHAR_NT:= TEST_PKG.TEST_VCHAR_NT();  
BEGIN
  AA(0):= '1'; AA(1):= '2'; AA(2):= '3';  
  NT:= CAST(AA AS TEST_PKG.TEST_VCHAR_NT);


Получаю PLS-00204: function or pseudo-column '' may be used inside a SQL statement only.
Хорошо, пишу в SQL:
Код: plsql
1.
SELECT CAST(AA AS TEST_PKG.TEST_VCHAR_NT) INTO NT FROM DUAL;


ORA-00902: invalid datatype - ну про это уже выше было написано
Пробуем совсем бред:
Код: plsql
1.
SELECT COLUMN_VALUE BULK COLLECT INTO NT FROM TABLE(AA);


PLS-00382: expression is of wrong type - здесь я так понял 11r2 не дает так TABLE использовать

В итоге простой конструкции языка нет?
Не спрашивайте зачем мне это, еще не придумал :) Например, если параметр функции определенный вид коллекции принимает.
...
Рейтинг: 0 / 0
22.11.2019, 14:57
    #39892967
oragraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CAST коллекции к пакетному типу
Vlad074

В итоге простой конструкции языка нет?
Не спрашивайте зачем мне это, еще не придумал :) Например, если параметр функции определенный вид коллекции принимает.
За тру-кастингом и ООПой нужно обращаться к более другим языкам
...
Рейтинг: 0 / 0
22.11.2019, 14:59
    #39892972
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CAST коллекции к пакетному типу
Vlad074
Не спрашивайте зачем мне это, еще не придумал
Неужели так сложно для generic типов сделать функции-преобразователи?
...
Рейтинг: 0 / 0
22.11.2019, 16:53
    #39893068
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CAST коллекции к пакетному типу
Vlad074
Не спрашивайте зачем мне это, еще не придумал

приходи, когда придумаешь...
...
Рейтинг: 0 / 0
22.11.2019, 17:06
    #39893076
Vlad074
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CAST коллекции к пакетному типу
alex-ls

приходи, когда придумаешь...
Лучше знать заранее ответ, а не искать потом
...
Рейтинг: 0 / 0
22.11.2019, 17:32
    #39893090
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CAST коллекции к пакетному типу
Vlad074
alex-ls

приходи, когда придумаешь...
Лучше знать заранее ответ, а не искать потом
Если сейчас не придумал, то и потом искать ответ на вопрос "зачем мне это" нет смысла.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / CAST коллекции к пакетному типу / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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