PostgreSQL – Funciones

PostgreSQL funciónTambién conocidos como procedimientos almacenados, le permiten realizar operaciones que normalmente requerirían múltiples consultas y llamadas por turnos en una sola función en la base de datos. Las funciones le permiten reutilizar la base de datos porque otras aplicaciones pueden interactuar directamente con sus procedimientos almacenados en lugar de middleware o código duplicado.

Las funciones se pueden crear en cualquier lenguaje de su elección, como SQL, PL / pgSQL, C, Python, etc.

Sintaxis

La sintaxis básica para crear una función es la siguiente:

CREATE [OR REPLACE] FUNCTION function_name (arguments) 
RETURNS return_datatype AS $variable_name$
   DECLARE
      declaration;
      [...]
   BEGIN
      < function_body >
      [...]
      RETURN { variable_name | value }
   END; LANGUAGE plpgsql;

Dónde,

  • nombre de la función especifica el nombre de la función.

  • [OR REPLACE] la opción le permite modificar una función existente.

  • La función debe contener regreso declaración.

  • REGRESO La cláusula define el tipo de datos que devolverá de la función. EN return_datatype puede ser un tipo básico, compuesto o de dominio, o puede hacer referencia a un tipo de columna de tabla.

  • función del cuerpo contiene la parte ejecutable.

  • La palabra clave AS se utiliza para crear una función independiente.

  • plpgsql es el nombre del idioma en el que se implementa la función. Aquí usamos esta opción para PostgreSQL, puede ser SQL, C, interno o el nombre de un lenguaje de procedimiento definido por el usuario. Para compatibilidad con versiones anteriores, el nombre se puede escribir entre comillas simples.

Ejemplo

El siguiente ejemplo muestra cómo crear y llamar a una función independiente. Esta función devuelve el número total de registros en la tabla EMPRESA. Usaremos la tabla EMPRESA que tiene los siguientes registros:

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

La función totalRecords () se ve así:

CREATE OR REPLACE FUNCTION totalRecords ()
RETURNS integer AS $total$
declare
	total integer;
BEGIN
   SELECT count(*) into total FROM COMPANY;
   RETURN total;
END;
$total$ LANGUAGE plpgsql;

Cuando se ejecuta la consulta anterior, el resultado será:

testdb# CREATE FUNCTION

Ahora hagamos una llamada a esta función y verifiquemos los registros en la tabla EMPRESA.

testdb=# select totalRecords();

Cuando se ejecuta la consulta anterior, el resultado será:

 totalrecords
--------------
      7
(1 row)

🚫