I'm attempting to return a single row of user data from a function based on the input of a user. I cannot access the values of the object columns. I have tried the procedure solution here as well as pretty much copying the solution here (Using ORACLE and 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;
/
The Object Is A User
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)
);
/
This outputs [T_USEROBJECT]
SELECT *
FROM ( SELECT F_FINDBYSSN('123-45-6789') AS THISUSER FROM DUAL );
Using any column names in the select statement causes an "invalid identifier" error