powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Передача функции табличного типа
10 сообщений из 10, страница 1 из 1
Передача функции табличного типа
    #40090498
ultrasonic7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Есть тип, объявленный на уровне схемы:
Код: plsql
1.
CREATE OR REPLACE TYPE ABC.T_NUM_ARRAY AS TABLE OF NUMBER;



Есть функция, которая принимает параметр этого типа на вход:
Код: plsql
1.
FUNCTION GET_VALUES_XML(iValues  IN ABC.T_NUM_ARRAY)RETURN XMLTYPE;



Как правильно передать этой функции параметр на вход?

Сейчас делаю так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
  FGH.PKG_ABC.GET_VALUES_XML(iValues     => (SELECT ABC.T_NUM_ARRAY(VAL) FROM
                                              (SELECT 52618304 VAL FROM DUAL
                                              UNION ALL
                                              SELECT 57423355  FROM DUAL
                                              UNION ALL
                                              SELECT 78827256  FROM DUAL)
                                            ) 
                                   ) RES1
FROM DUAL;




Получаю ошибку:
ORA-01427: подзапрос одиночной строки возвращает более одной строки
...
Рейтинг: 0 / 0
Передача функции табличного типа
    #40090517
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Передача функции табличного типа
    #40090533
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123йй,

Ты довольно суров к автору, надо быть очень внимательным чтоб увидеть в разделе по ссылке

See Also:

Oracle Database SQL Language Reference for information about the CAST function ...
...
Рейтинг: 0 / 0
Передача функции табличного типа
    #40090536
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ultrasonic7,

Вам надо передать "константы", или набор чисел из таблички?

ps

FGH.PKG_ABC.GET_VALUES_XML(iValues => ABC.T_NUM_ARRAY( 52618304, 52618123,...), ...

.....
stax
...
Рейтинг: 0 / 0
Передача функции табличного типа
    #40090538
ultrasonic7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё, я разобрался))
Нужно было передать набор чисел как одну переменную с типом ABC.T_NUM_ARRAY
Вот как это нужно было делать:
Код: plsql
1.
2.
3.
SELECT 
  FGH.PKG_ABC.GET_VALUES_XML(iValues =>(SELECT ABC.T_NUM_ARRAY(52618303, 57423352, 68827252) FROM DUAL)) RES1
FROM DUAL;
...
Рейтинг: 0 / 0
Передача функции табличного типа
    #40090541
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ultrasonic7
Всё, я разобрался))
...Вот как это нужно было делать:
Код: plsql
1.
2.
3.
SELECT 
  FGH.PKG_ABC.GET_VALUES_XML(iValues =>(SELECT ABC.T_NUM_ARRAY(52618303, 57423352, 68827252) FROM DUAL)) RES1
FROM DUAL;


SELECT ... FROM dual - нахрена ?
...
Рейтинг: 0 / 0
Передача функции табличного типа
    #40090542
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ultrasonic7
Всё, я разобрался))


зачем SELECT?

.....
stax
...
Рейтинг: 0 / 0
Передача функции табличного типа
    #40090543
ultrasonic7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ваш вариант тоже работает, он более краток даже
Stax
ultrasonic7,
FGH.PKG_ABC.GET_VALUES_XML(iValues => ABC.T_NUM_ARRAY( 52618304, 52618123,...), ...
...
Рейтинг: 0 / 0
Передача функции табличного типа
    #40090546
ultrasonic7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По итогу вызов функции такой получился:
Код: plsql
1.
2.
3.
SELECT 
  FGH.PKG_ABC.GET_VALUES_XML(iValues =>ABC.T_NUM_ARRAY(52618303, 57423352, 68827252)) RES1
FROM DUAL;



В данном случае работа с ABC.T_NUM_ARRAY такая же, как и с SYS.ODCINUMBERLIST
...
Рейтинг: 0 / 0
Передача функции табличного типа
    #40090548
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ultrasonic7,

SQL> desc sys.odcinumberlist
sys.odcinumberlist VARRAY(32767) OF NUMBER

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


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