Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Получить Select'ом результат функции, возвращающей объект / 6 сообщений из 6, страница 1 из 1
01.02.2017, 13:04
    #39396275
Krechet777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить Select'ом результат функции, возвращающей объект
Добрый день. Подскажите пожалуйста такой момент:
Есть тип содержащий данные о клиенте
Код: 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
01.02.2017, 13:29
    #39396317
Получить Select'ом результат функции, возвращающей объект
Код: plsql
1.
select getclientfields (1) from dual;
...
Рейтинг: 0 / 0
01.02.2017, 13:33
    #39396320
Krechet777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить Select'ом результат функции, возвращающей объект
Уточню немного, нужно ответ получить в таком виде, как если бы select был сделан из обычной таблицы. Т.е. чтоб в результате были колонки clientId и ShortName.
А в случае с "select getclientfields (1) from dual;" возвращается одно поле с объектом внутри
...
Рейтинг: 0 / 0
01.02.2017, 13:45
    #39396329
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить Select'ом результат функции, возвращающей объект
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
01.02.2017, 13:47
    #39396331
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить Select'ом результат функции, возвращающей объект
dbms_photoshopИли чтоб был один вызовВ подобных случаях Оракл не дает гарантии сколько раз будет вызвано.
Так что надо проверять опятням путем и при необходимости вставлять костыли.
...
Рейтинг: 0 / 0
01.02.2017, 13:58
    #39396336
Krechet777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить Select'ом результат функции, возвращающей объект
авторselect t.f.clientid, t.f.shortname from (select getclientfields(1) as f from dual) t
Огромное спасибо! То что надо!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Получить Select'ом результат функции, возвращающей объект / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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