Oficialmente, PostgreSQL solamente tiene "funciones". Funciones de disparo se refieren a veces como "procedimientos de activación", pero que el uso no tiene un significado distinto. Internamente, las funciones se refieren a veces como procedimientos, como en el catálogo del sistema pg_proc
. Eso es un vestigio de Postquel. Cualquier cuenta que algunas personas (posiblemente con experiencia en diferentes sistemas de bases de datos) podrían asociar con los procedimientos, tales como su relevancia para la prevención de las inyecciones SQL o el uso de los parámetros de salida, también se aplican a las funciones tal y como existen en PostgreSQL.
Ahora, cuando la gente en la comunidad de charla PostgreSQL sobre "Procedimientos almacenados" o "procedimientos reales almacenados", sin embargo, que a menudo significan una característica hipotética de un objeto función similar que puede iniciar y transacciones de alto en su cuerpo, algo que las funciones actuales no pueden hacer. El uso del término "procedimiento almacenado" en este contexto parece ser por analogía con otros productos de bases de datos. Vea esta lista de correo de rosca para una idea vaga.
En la práctica, sin embargo, esta distinción de función versus procedimiento en términos de sus capacidades de control de transacciones no es universalmente aceptada, y ciertamente muchos programadores sin sesgo en la base de datos tomarán una interpretación similar a Pascal de un procedimiento como una función sin valor de retorno. (El estándar SQL parece tomar un punto medio, ya que un procedimiento por defecto tiene un comportamiento de transacción diferente que una función, pero esto se puede ajustar por objeto). Entonces, en cualquier caso, y especialmente cuando se miran preguntas en Stack Exchange con un público muy variado, debe evitar asumir demasiado y utilizar términos más claros o definir las propiedades que espera.