Funciones PostgreSQL

En esta sección, vamos a entender el funcionamiento de las funciones PostgreSQL, crear comando de función, y ver el ejemplo en tiempo real del comando PostgreSQL CREATE FUNCTION utilizando las diferentes herramientas de PostgreSQL como pgadmin4 y SQL shell (PSQL).

Y vea el ejemplo de llamar a una función definida por el usuario como la notación posicional con nombre, la notación mixta.

¿Qué es la función PostgreSQL?

Una función PostgreSQL o un procedimiento almacenado es un conjunto de comandos SQL y de procedimiento como declaraciones, asignaciones, bucles, flujo de control, etc. almacenados en el servidor de la base de datos y puede ser involucrado usando la interfaz SQL. Y también se conoce como procedimientos almacenados PostgreSQL.

Podemos crear funciones PostgreSQL en servalenguajes, por ejemplo, SQL, PL/pgSQL, C, Python, etc.

Nos permite realizar operaciones, que generalmente tomarían varios comandos y viajes de ida y vuelta en una función dentro de la base de datos.

¿Qué es el comando CREATE Function de PostgreSQL?

En PostgreSQL, si queremos especificar una nueva función definida por el usuario, podemos utilizar el comando CREATE FUNCTION.

Sintaxis del comando CREATE Function de PostgreSQL

La sintaxis del comando CREATE Function de PostgreSQL es la siguiente:

En la sintaxis anterior, hemos utilizado los siguientes parámetros, como se muestra en la siguiente tabla:

Parámetros Descripción
nombre_de_la_función
  • El parámetro nombre de la función se utiliza para definir el nombre de la función.
  • The function name is written after the CREATE FUNCTION keyword.
  • We can use the OR REPLACE keyword if we want to change the current function.
  • And it is an optional parameter.
Function
  • After using the OR REPLACE keyword, we can define the function parameter list that are covered in the parentheses after the Function Name.
  • And a function can contain zero or several parameters.
RETURN
  • We can define the data type after the RETURN keyword, which we are going to return from the function.
  • It can be a base, composite, or domain type or reference of the type of a table column.
Language plpgsql
  • It is used to define the name of the Procedural language in which the function is executed.
  • And not just plpgsql, the PostgreSQL supports various procedural languages.
Function_body
  • The function_body contains the executable parts of the logics.

Example of PostgreSQL Create Function Command

Let us see a different example to understand the working of the PostgreSQL CREATE Function command.

We are taking the Car table from the Javatpoint database, created in the PostgreSQL Tutorial.

Creating a new function

In the below command, we are creating a new function, which counts the Cars whose Car_Price between the Price_from and Price_to parameters:

The get_car_Price function is divided into two main sections, which are Header and Function Body.

Hemos utilizado los siguientes parámetros en la sección Header:

  • Primordialmente, especificamos el nombre de la función como get_car_Price(), que se escribe después de la función create
  • Después, la función get_car_Price() contiene dos parámetros Price_from y Price_to, que tienen un tipo de datos entero.
  • Entonces, la función get_car_Price() recupera un entero definido por la condición return int.
  • Y al final, hemos utilizado el lenguaje de la función como plpgsql.
    • Hemos utilizado los siguientes parámetros en la sección del cuerpo de la función:

      • Hemos utilizado la ilustración stringconstant entre comillas de dólares en la sección de la función, que comienza con $$ y termina con $$.
      • Entre el signo $$, podemos colocar un bloque, que abarca la declaración y la lógica de la función.
      • En el bloque de declaración, declaramos una variable llamada Car_count,que almacena los coches seleccionados del Car
      • En el cuerpo de la sección del bloque, hemos utilizado el comando SELECT INTO para seleccionar el Precio de los coches cuyos valores se encuentran entre Precio_desde y Precio_hasta y dar la salida al Recuento_de_coches
      • Al final del bloque, hemos utilizado el comando RETURN para obtener el

      Creación de una función en PostgreSQL

      En PostgreSQL, podemos crear una función de dos maneras:

      • Crear función en PostgreSQL usando pgAdmin
      • Crear función en PostgreSQL usando SQL Shell
        • Crear función en PostgreSQL usando pgAdmin

          Vamos a seguir el siguiente proceso para crear una función en pgAdmin:

          Paso1

          En primer lugar, abriremos la última versión pgAdmin en nuestro sistema local, y nos dirigiremos al árbol de objetos y nos conectaremos a la base de datos de ejemplo Javatpoint en la que queremos crear una función.

          Paso2

          Después, abriremos la herramienta de consulta haciendo clic en Query tool seguido de la sección Tools, como podemos ver en la siguiente captura:

          PoatgreSQL Function2

          Paso3

          Para crear la función get_car_Price1(), utilizaremos el código anterior en la herramienta de consulta y haremos clic en el botón Execute.

          Después de implementar el comando anterior, obtendremos la siguiente ventana de mensaje mostrando que la función get_car_Price1() ha sido creada con éxito en una base de datos similar.

          Función PoatgreSQL

          Y, podemos identificar la función get_car_Price() en la lista de Funciones como podemos ver en la siguiente captura de pantalla:

          Función PoatgreSQL

          Nota: Si no podemos identificar el nombre de la función, podemos hacer clic con el botón derecho del ratón en el nodo Funciones y seleccionar el elemento de menú Refrescar… menu item to revive the function list:

          PoatgreSQL Function

          Creating a function using SQL Shell(psql)

          We are going to follow the below process to create a table in psql:

          Step1

          • Firstly, we will open the psqlin our local system, and we will connect to the database where we want to create a function.
          • We will create a table in the javatpointdatabase, which we created earlier in the PostgreSQL tutorial.

          Step2

          • For connecting a database, we will enter the below command:

          Output

          After executing the above command, we will get the following output:

          PoatgreSQL Function

          Note: If we enter a similar command as above to create a function, in psql, it will issue the below error that is: the function get_car_price already exists with the same argument types.

          PoatgreSQL Function

          Therefore, to resolve this error, we create a new function as get_car_Price1() in the next step.

          Step3

          We will enter the below command to create a function as get_car_Price1() in the javatpoint database.

          Output

          We will get the following output on implementing the above command, which displays that the get_car_Price_count1() function has been created successfully.

          PoatgreSQL Function

          Step4

          We can use the below command to list all user-defined functions in the existing database.

          Output

          After executing the above command, we will get the below output:

          PoatgreSQL Function

          How to Call a user-defined function

          In PostgreSQL, we can call the user-defined function in three ways, which are as follows:

          • Notación posicional
          • Notación con nombre
          • La notación mixta

          Llamada a una función utilizando la notación posicional

          Si queremos describir los argumentos en un orden similar al de los parámetros, podemos llamar a una función con la ayuda de la notación posicional.

          Veamos un ejemplo de muestra para entender el funcionamiento de la Notación Posicional para llamar a una función concreta.

          En el siguiente ejemplo, los argumentos de get_car_price() son 26000 y 70000, que equivalen a los parámetros Price_from y Price_to.

          Salida

          Obtendremos la siguiente salida al implementar el comando anterior, que recupera aquellas cuatro filas cuyo precio_coche está entre 26000 y 70000.

          Función PoatgreSQL

          Cuando la función apenas tiene parámetros, podemos llamar a una función con la ayuda de la notación posicional.

          Si la función contiene varios parámetros, podemos utilizar la notación con nombre para llamar a la función en particular porque el uso de la notación con nombre hará que la llamada a la función sea más comprensible.

          Llamada a una función utilizando la notación con nombre

          En el siguiente ejemplo, estamos mostrando el funcionamiento de la llamada a la función get_car_Price() utilizando la notación con nombre:

          Salida

          Obtendremos la siguiente salida al ejecutar el comando anterior, que muestra cuatro filas basadas en el rango anterior de car_price.

          Función PoatgreSQL

          En la notación mencionada anteriormente, hemos utilizado el => para distinguir el nombre y el valor del argumento.

          PostgreSQL permite la sintaxis más antigua creada en := para la compatibilidad con versiones anteriores, como podemos ver en el siguiente comando:

          Salida

          Después de ejecutar el comando anterior, obtendremos una salida similar en comparación con el resultado del comando anterior donde utilizamos el ‘=>’ en lugar de ‘:=’.

          Función PoatgreSQL

          Llamada a una función utilizando la notación mixta

          Es la agrupación de notaciones posicionales y con nombre.

          Veamos un ejemplo para entender el funcionamiento de la Llamada a una función utilizando la notación mixta.

          En la notación mixta, no podemos utilizar los Parámetros nombrados antes de los Parámetros posicionales.

          Por ejemplo:

          En el siguiente comando, utilizaremos la noción nominativa para el parámetro Price_from=>26000, mientras que para el parámetro Price_to, hemos utilizado la noción posicional como 70000, como podemos ver en el siguiente comando:

          Salida

          Después de ejecutar el comando anterior, PostgreSQL lanza un error, que dice que el argumento posicional no puede seguir al argumento nombrado.

          Función PostgreSQL

          Para resolver el error anterior, estamos utilizando la notación posicional y la notación con nombre para la función get_car_price() donde se utiliza el 26000 para representar la notación posicional; por otro lado, se utiliza Price_to=>70000 para representar la notación con nombre:

          Salida

          Tras ejecutar el comando anterior, obtendremos la siguiente salida, que devuelve aquellos coches cuyo precio_de_coche está entre 26000 y 70000.

          Función de PostgreSQL

          Resumen

          En la sección de funciones de PostgreSQL, hemos aprendido los siguientes temas:

          • Hemos utilizado el comando CREATE Function para crear una función definida por el usuario para la tabla en particular.
          • Hemos entendido el proceso de llamar a una función definida por el usuario con la ayuda de diferentes notaciones como Positional, Named y Mixed.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *