Skip to content
Advertisement

Oracle missing FROM clause

Is it possible to create a CTE without a FROM, and if not isn’t that the whole point of a CTE in the first place?

WITH cte AS
(
  SELECT 1 AS col1, 2 AS col2
)
SELECT col1, col2 FROM cte;

> ORA-00923: FROM keyword not found where expected

It seems a quick-fix for this is just adding FROM DUAL whenever needed. Is that what’s supposed to be done?

Advertisement

Answer

Yes, that’s exactly what dual is supposed to be used for.

Selecting from the DUAL table is useful for computing a constant expression with the SELECT statement. Because DUAL has only one row, the constant is returned only once.

https://docs.oracle.com/cd/B19306_01/server.102/b14200/queries009.htm

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement