tutorial - sintaxis para crear una funcion en postgresql
¿Cómo puedo ejecutar el código pl/pgsql sin crear una función? (3)
Con SQL Server, puedo ejecutar código código T-SQL ad hoc con lógica de procedimiento completa a través de SQL Server Management Studio o cualquier otro cliente. Empecé a trabajar con PostgreSQL y encontré una pequeña diferencia en que PGSQL requiere que cualquier lógica se incruste en una función.
¿Hay alguna manera de ejecutar código PL / PGSQL sin crear una función ejecutando?
Luché para que esto funcionara porque es bastante estricto sobre cómo agregar puntos y coma en los lugares correctos. Pero una vez que te acostumbras, funciona bien. Además de la imposibilidad de devolver los registros, por supuesto, puedes subir avisos y excepciones y hacer otras soluciones como usar tablas temporales como lo señaló @ErwinBrandstetter en un comentario anterior.
p.ej:
DO
$$
BEGIN
IF EXISTS(SELECT ''any rows?''
FROM {your_table}
WHERE {your_column} = ''blah'')
THEN
RAISE NOTICE ''record exists'';
ELSE
RAISE EXCEPTION ''record does not exist'';
END IF;
DROP TABLE IF EXISTS foo;
CREATE TEMP TABLE foo AS
SELECT ''bar''::character varying(5) as baz;
END
$$;
SELECT * FROM foo;
No aún no. La versión 9.0 (todavía alfa) tendrá esta opción (do), debes esperar hasta que se lance.
Postgres 9
DO $$
-- declare
BEGIN
/* pl/pgsql here */
END $$;