I don't know; there are occasions where this is useful.
I have used something similar when there is logically a table, but I don't want a physical table. This is useful where the application relies on a fixed set of values and where a new or changed value would break the system (not sure your names example meets this criteria?).
I normally create a view and then include that in my query.
E.g. CREATE VIEW V_STATUS AS (
SELECT 1 STATUS_ID, "QUEUED" STATUS_NAME FROM DUAL
UNION
SELECT 2 STATUS_ID, "RUNNING" STATUS_NAME FROM DUAL
UNION
SELECT 3 STATUS_ID, "COMPLETED" STATUS_NAME FROM DUAL
UNION
SELECT 4 STATUS_ID, "FAILED" STATUS_NAME FROM DUAL );
I can then use it as follows:
SELECT JOB_ID, STATUS_NAME
FROM JOB, V_STATUS
WHERE JOB.STATUS_ID = V_STATUS.STATUS_ID;