ver una procedimientos postgres postgre otra llamar iii funciones funcion ejemplo dentro crear consulta basicas almacenados postgresql psql

postgresql - una - Llamar a funciones con exec en lugar de seleccionar



procedimientos almacenados en postgresql pdf (3)

Sí, esa es la forma estándar, y sí, es extraño.

Por lo general, debe escribir tales funciones como procedimientos almacenados e invocarlos con el comando CALL o EXECUTE . Sin embargo, PostgreSQL no admite procedimientos almacenados verdaderos (conjuntos de resultados múltiples, transacciones autónomas y todo eso), solo funciones definidas por el usuario de sql-callable .

Por lo tanto, la solución es SELECT function_name() utilizando la sintaxis de la extensión PostgreSQL que omite FROM , o SELECT 1 FROM function_name(); ser (algo) más estándar.

El controlador ODBC, el controlador JDBC, etc. entienden la sintaxis de escape de {call func_name()} y la traducen automáticamente a un SELECT subyacente.

¿La forma predeterminada de invocar una función es select * from my_function() ?

Lo pregunto porque he creado una función que no devuelve nada, solo inserta datos en una tabla y (viniendo de un fondo de SQL Server) se siente "extraño" llamarlo con select * from...

Esperaba algo como exec my_function()


Utilizará from cuando la función devuelve un conjunto. Si la función regresa void solo hazlo

select my_function();


utilice la instrucción PERFORM - http://www.postgresql.org/docs/current/static/plpgsql-statements.html

Algunas veces es útil evaluar una consulta de expresión o SELECCIONAR, pero descartar el resultado, por ejemplo cuando se llama a una función que tiene efectos secundarios pero ningún valor de resultado útil. Para hacer esto en PL / pgSQL, use la instrucción PERFORM

entonces es solo

DO $$ BEGIN PERFORM my_function(); END $$;