4 votos

Postgresql: error de sintaxis en o cerca de "DO"

Estoy tratando de ejecutar un bloque DO, por ejemplo este (copiado de un post en este foro)

DO $$
DECLARE x int;
    BEGIN
    x := 10;
    RAISE NOTICE '>>>%<<<', x;
END;
$$

pero lo que sucede es:

ERROR: error de sintaxis en o cerca de "DO"

estado SQL: 42601

Carácter: 1

No importa qué bloque DO ejecute, la declaración DO simplemente no funciona (incluso en ejemplos copiados y pegados del documento, y me pregunto cuál podría ser la razón. ¿Alguien podría ayudarme, por favor?

Gracias

6voto

Craig Ringer Puntos 72371

Estás ejecutando una versión antigua de PostgreSQL.

En general, si recibes un error de sintaxis inesperado en una palabra clave o PostgreSQL se queja de que falta una función que obviamente debería existir, lo primero que debes hacer es comprobar que la funcionalidad que estás intentando usar realmente existía en tu versión.

Puedes reemplazar un bloque DO con:

CREATE OR REPLACE FUNCTION some_func() RETURNS void AS 
$$
.. cuerpo del bloque DO aquí...
$$ LANGUAGE plpgsql VOLATILE;

SELECT some_func();

DROP FUNCTION some_func();

en una versión anterior.

1voto

epox_spb Puntos 281

Si tienes el mismo error con postgreSQL 9.0+, entonces se debe al tipo de ejecución incorrecto. pgAdminIII tiene dos botones de ejecución (triángulo verde):

  • Ejecutar consulta
  • Ejecutar pgScript

Para ejecutar DO $$ necesitas el primero.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X