Si en un stored procedure o en un trigger escribimos algo como:

WITH CONSULTAS AS (
   SELECT
      CLI_IDENTI,
      CLI_NOMBRE
   FROM
      CLIENTES
 )

 FOR SELECT

cuando compilamos ese código veremos un mensaje de error: “token unknown FOR”

¿Qué significa ese mensaje?

Que quisimos usar como palabra clave una palabra que para el Firebird no puede ser usada como tal en ese lugar.

¿Y por qué eso?

Porque la tabla CTE es parte del FOR SELECT y por lo tanto debe encontrarse adentro, no afuera. La sintaxis correcta es:

FOR WITH CONSULTAS AS (

o sea que en este caso no se usa un FOR SELECT sino un FOR WITH

Artículo relacionado:

El índice del blog Firebird21

Anuncios