powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / CAST коллекции к пакетному типу
10 сообщений из 10, страница 1 из 1
CAST коллекции к пакетному типу
    #39892382
Vlad074
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.

Подскажите, 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
CAST коллекции к пакетному типу
    #39892386
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad074
в чем причина?
SQL-ю SQL-ево.
...
Рейтинг: 0 / 0
CAST коллекции к пакетному типу
    #39892396
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad074,

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

Как преобразовать один тип коллекции к другой в тексте 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
CAST коллекции к пакетному типу
    #39892967
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad074

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

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

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

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


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