powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Получить Select'ом результат функции, возвращающей объект
6 сообщений из 6, страница 1 из 1
Получить Select'ом результат функции, возвращающей объект
    #39396275
Krechet777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Подскажите пожалуйста такой момент:
Есть тип содержащий данные о клиенте
Код: sql
1.
2.
3.
4.
CREATE OR REPLACE TYPE ClientInfo is object (
    clientId       Number(15),
    ShortName      varchar2(50),
    );


И функция, возвращающая результат этого типа
Код: sql
1.
2.
3.
4.
5.
6.
7.
function GetClientFields(nClnt in number) return ClientInfo is
  R    ClientInfo := ClientInfo (null,null);
begin
  R.clientId       := 1;
  R.ShortName      := 'ShortName';
  return R;
end GetClientFields;


Можно ли получить результат функции используя select?
Пробовал сделать приведение типов SELECT * FROM TABLE(GetClientFields(1)), но как и ожидал, так не заработало
...
Рейтинг: 0 / 0
Получить Select'ом результат функции, возвращающей объект
    #39396317
Код: plsql
1.
select getclientfields (1) from dual;
...
Рейтинг: 0 / 0
Получить Select'ом результат функции, возвращающей объект
    #39396320
Krechet777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточню немного, нужно ответ получить в таком виде, как если бы select был сделан из обычной таблицы. Т.е. чтоб в результате были колонки clientId и ShortName.
А в случае с "select getclientfields (1) from dual;" возвращается одно поле с объектом внутри
...
Рейтинг: 0 / 0
Получить Select'ом результат функции, возвращающей объект
    #39396329
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Krechet777,

Ну и обращайся к атрибутам через точку
Код: plaintext
select getclientfields(1).clientid clientid, getclientfields(1).shortname shortname from dual

Или чтоб был один вызов - проалиась
Код: plaintext
select t.f.clientid, t.f.shortname from (select getclientfields(1) as f from dual) t
...
Рейтинг: 0 / 0
Получить Select'ом результат функции, возвращающей объект
    #39396331
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopИли чтоб был один вызовВ подобных случаях Оракл не дает гарантии сколько раз будет вызвано.
Так что надо проверять опятням путем и при необходимости вставлять костыли.
...
Рейтинг: 0 / 0
Получить Select'ом результат функции, возвращающей объект
    #39396336
Krechet777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторselect t.f.clientid, t.f.shortname from (select getclientfields(1) as f from dual) t
Огромное спасибо! То что надо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Получить Select'ом результат функции, возвращающей объект
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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