Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как обратиться в селекте к одному из полей записи, которая возвращается пакетной функц  [new]
ozzmosis
Member

Откуда:
Сообщений: 281
Здравствуйте.

Есть таблица и пакет с функцией, которая возвращает одну запись из таблицы по входному ID'шнику, упрощённо:
drop table xxx_ttt;
create table xxx_ttt(id number primary key, x number, y number);
insert into xxx_ttt values(1,111,222);
insert into xxx_ttt values(2,211,122);
insert into xxx_ttt values(3,311,322);
commit;

create or replace package xxx_temp_pkg as
    function xxx_temp_ret_record(a_id number) return xxx_ttt%rowtype;
end;    
/
create or replace package body xxx_temp_pkg as
    function xxx_temp_ret_record(a_id number) return xxx_ttt%rowtype is
        v_result xxx_ttt%rowtype;
    begin
        select * into v_result from xxx_ttt where id=a_id;
    end;
end;
/


Как обратиться в селекте к одному из полей той записи, которая возвращается пакетной функцией ?
В доке сказано:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions001.htm
Single-Row Functions

Single-row functions return a single result row for every row of a queried table or view.
These functions can appear in select lists, WHERE clauses, START WITH and CONNECT BY clauses, and HAVING clauses.
Пробую - не получается:
select zzz_dbg_pkg.zzz_dbg_ret_record(2).x from dual
       *
ERROR at line 1:
ORA-06553: PLS-801: internal error [55018]

Через промежуточную переменную - понятно и не интересно.
Есть ли возможность напрямую в селект затолкать ?
4 фев 13, 15:50    [13873160]     Ответить | Цитировать Сообщить модератору
 Re: Как обратиться в селекте к одному из полей записи, которая возвращается пакетной функц  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
ozzmosis,

SQL движок не знает ничего про атрибут %rowtype.
4 фев 13, 16:06    [13873263]     Ответить | Цитировать Сообщить модератору
 Re: Как обратиться в селекте к одному из полей записи, которая возвращается пакетной функц  [new]
ORA__SQL
Member

Откуда: Moscow
Сообщений: 1774
ozzmosis,
1. Забыл RETURN
2. Goggle не доступен? Например, https://forums.oracle.com/forums/thread.jspa?threadID=2411542
4 фев 13, 16:07    [13873271]     Ответить | Цитировать Сообщить модератору
 Re: Как обратиться в селекте к одному из полей записи, которая возвращается пакетной функц  [new]
ozzmosis
Member

Откуда:
Сообщений: 281
ORA__SQL
1. Забыл RETURN
да, спешил сильно.
ORA__SQL
2. Goggle не доступен? Например, https://forums.oracle.com/forums/thread.jspa?threadID=2411542
Спасибо. Видел ведь это, но не стал читать, "многа букаф" показалось. А там, оказывается, пост от SY был :-)
4 фев 13, 16:30    [13873480]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить