The Oracle database doesn’t allow you to execute a SELECT statement without a FROM clause. You can't, for example, do SELECT 2 + 2
, you must do SELECT 2 + 2 FROM dual
. “dual” is a fictional table which exists solely to allow these sorts of operations.
What it isn’t meant for is Aspirist’s sample, from the Sidebar.
CREATE OR REPLACE VIEW ITIL_SERVICE_V1 AS SELECT 'SS1' SERVICIO, 'Low' IMPACTO TIME, 'Low' URGENCIA TIME, 48 RESPONSE TIME, 96 RESOLUTION TIME, 4 ESCALATES TIME FROM DUAL -- Priority Low UNION ALL SELECT 'SS1', 'Low', 'Medium', 48,96,4 FROM DUAL -- Priority low UNION ALL SELECT 'SS1', 'Medium', 'Low', 48,96,4 FROM DUAL -- Priority low UNION ALL SELECT 'SS1', 'High', 'Low', 1.5,24,1 FROM DUAL -- Priority Medium UNION ALL SELECT 'SS1', 'Medium', 'Medium', 3,36,2 FROM DUAL -- Priority normal UNION ALL SELECT 'SS1', 'Low', 'High', 48,96,4 FROM DUAL -- Priority low /* SNIP a few dozen lines for brevity */ SELECT 'HS2', 'Low', 'High', 48,96,4 FROM DUAL -- Priority low UNION ALL SELECT 'HS2', 'Medium', 'High', 1.5,24,1 FROM DUAL -- Priority medium UNION ALL SELECT 'HS2', 'High', 'Medium', 0.30,16,0.30 FROM DUAL -- Priority High UNION ALL SELECT 'HS2', 'High', 'High', 0.15,8,0.15 FROM DUAL -- Priority Urgent UNION ALL --Asset Managemetn; (AM3) SELECT 'AM3', 'Low', 'Low', 48,96,4 FROM DUAL -- Priority Low UNION ALL SELECT 'AM3', 'Low', 'Medium', 48,96,4 FROM DUAL -- Priority Low /* SNIP 800 more lines of the same */ UNION ALL SELECT 'ACC45', 'Medium', 'High', 1.5,24,1 FROM DUAL -- Priority medium UNION ALL SELECT 'ACC45', 'High', 'Medium', 0.30,16,0.30 FROM DUAL -- Priority High UNION ALL SELECT 'ACC45', 'High', 'High', 0.15,8,0.15 FROM DUAL -- Priority Urgent;
If you’re asking yourself, “Did someone just hard code values into a view so that it behaves sort of like a table that you can’t ever change easily?”, the answer is, “Yes.”
If you’re asking yourself, “Why?”, there is no answer. Some things were not meant to be understood by mere mortals.