Я создаю функцию с использованием типов, это дает мне две ошибки: Ошибка (12,7): PL / SQL: SQL Заявление игнорируется Ошибка (27,13): PL / SQL: ORA -00904: «UT»: недопустимый идентификатор
Я не вижу проблем с моим кодом, как показано ниже, какая-либо помощь?
CREATE OR REPLACE EDITIONABLE FUNCTION ESF_GET_USERS
RETURN tc_users
IS
l_users tc_users;
BEGIN
SELECT t_user
(
Uname,
FName,
Sname,
PName,
Tit,
mail,
FC,
SC,
SN,
SD,
RC,
RN,
CC || ' ' || CN,
UT
)
BULK COLLECT INTO l_users
FROM USERS_MV;
RETURN l_users;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20001,'No records returned');
END esf_users;
Я создаю два типа, один - объект, а второй - таблица из этого объекта, как показано ниже:
CREATE OR REPLACE EDITIONABLE TYPE T_USER
AS OBJECT
(
UNAME VARCHAR2(20 BYTE),
FNAME VARCHAR2(30 BYTE),
SNAME VARCHAR2(30 BYTE),
PNAME VARCHAR2(30 BYTE),
TIT VARCHAR2(30 BYTE),
MAIL VARCHAR2(24 BYTE),
FC VARCHAR2(10 BYTE),
SC VARCHAR2(10 BYTE),
SN VARCHAR2(200 BYTE),
SD VARCHAR2(10 BYTE),
RC VARCHAR2(10 BYTE),
RN VARCHAR2(200 BYTE),
HN VARCHAR2(100 BYTE),
UT VARCHAR2(7 BYTE)
);
CREATE OR REPLACE EDITIONABLE TYPE TC_USERS AS TABLE OF t_user;
Код материализованного представления:
CREATE MATERIALIZED VIEW "USERS_MV"
AS select "UName",
"FName",
"Sname",
"PName",
"Tit",
"mail",
"FC",
"SC",
"SN",
"SD",
"RC",
"RN",
"CC",
"CN",
"UT"
from (
SELECT ...