Я пытаюсь вернуть одну строку пользовательских данных из функции на основе ввода пользователя.Я не могу получить доступ к значениям столбцов объекта.Я пробовал решение процедуры здесь , а также в значительной степени копирование решения здесь (с использованием ORACLE и SQLDeveloper)
CREATE OR REPLACE FUNCTION F_FINDBYSSN (SSN VARCHAR2)
RETURN T_USEROBJECT
AS
THISUSER T_USEROBJECT;
BEGIN
SELECT T_USEROBJECT (A.USER_ID,
A.FIRSTNAME,
A.LASTNAME,
A.SOCIAL,
A.BIRTHDATE,
A.PHONE,
A.USER_ROLE_TYPE_ID,
A.USER_LOGIN_ID,
A.USER_LAST_LOGIN,
B.LOGIN_USERNAME,
B.LOGIN_PASSWORD)
INTO THISUSER
FROM BANK_USERS A
INNER JOIN LOGININFO B
ON A.USER_LOGIN_ID = B.LOGIN_ID
AND A.SOCIAL = SSN;
RETURN THISUSER;
END;
/
Объект является пользователем
CREATE OR REPLACE TYPE T_USEROBJECT IS OBJECT
(
USERID INTEGER,
FNAME VARCHAR2 (50),
LNAME VARCHAR2 (50),
SSN VARCHAR2 (15),
BIRTHDATE DATE,
USERPHONE VARCHAR2 (15),
ROLEID INT,
LOGINID INT,
LASTLOGIN DATE,
UNAME VARCHAR2 (50),
UPASS VARCHAR (50)
);
/
Это выводит [T_USEROBJECT]
SELECT *
FROM ( SELECT F_FINDBYSSN('123-45-6789') AS THISUSER FROM DUAL );
Использование любых имен столбцов в операторе выбора приводит к ошибке «неверный идентификатор»