PostgreSQL: Funciones agregadas de SQLSin categoría 

PostgreSQL, funciones

PostgreSQL, funciones

             Hemos visto que PostgreSQL nos brinda un conjunto de funciones para el manejo de fechas, string, números etc. pero además nos permite crear funciones propias. La creación de una función es muy útil cuando queremos reutilizar un algoritmo. Podemos crear una función y luego llamarla en diferentes situaciones.

 

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

 

CREATE OR REPLACE FUNCTION nombre_de_la_función(lista_parámetros)

RETURNS tipo_de_dato_que_retorna  AS

definir_la_función

LANGUAJE lenguaje_utilizado

 

 

 

            Veamos por partes que quiere decir cada una de las partes que conforman la sentencia:

 

 

Significado

CREATE OR REPLACE FUNCTION

Palabra clave para crear una nueva función, en caso de que la función ya exista utiliza la palabra clave ‘replace’. Si no se utiliza la ‘replace’ y la función ya existe aparecerá un mensaje de error.

RETURNS

Especifica el tipo de datos que va a retornar la función.

LANGUAJE

Especifica el lenguaje utilizado en la definición de la función.

 

 

            En la definición de la función se pueden utilizar los siguientes lenguajes para codificarla:        

  • PL/PGSQL.
  • PL/TCL.
  • PL/PERL.

 

            La forma más fácil de implementar funciones es utilizar el lenguaje SQL. Una función SQL nos permite dar un nombre a uno o varios comandos sql.

 

            Como primer problema implementaremos una función que reciba dos enteros y retorne la multiplicación  de los mismos:

 

 

CREATE OR REPLACE FUNCTION multiplicar(integer,integer)

RETURNS integer AS

‘select $1*$2;’

language sql;

 

 

            Para hacer la llamada a la función creada anteriormente usaremos la siguiente instrucción:

 

Select multiplicar(3,4);

 

 

 

 

            Ejercicio:

  • Crear una función llamada ‘media’ que reciba 3 números enteros y devuelva el promedio de los mismos.
  • Crear una función que calcule la distancia entre dos puntos en el plano.

Notas:

  • La fórmula para calcular la distancia en la siguiente:

 

  • Usted utilizará las funciones sqrt(x) y power(x,y) para resolver la fórmula de la distancia.

 

 

Funciones y Consultas

 

            Se puede acceder a más de una tabla en una función. En el siguiente ejemplo realizaremos una función que acceda a la tabla ‘Usuarios’:

 

  • Crearemos la tabla usuarios con los siguientes atributos:

            Create table usuarios(

                        nombre varchar (30),

                        clave varchar(10)

            );

 

  • Ahora crearemos una función que retorne la clave de un usuario que se pasa por parámetro:

 

            CREATE OR REPLACE FUNCTION devuelveclave(varchar)  RETURNS varchar AS

            ‘select clave from usuarios where nombre=$1;’

            language sql;

 

  • Insertamos datos a la tabla ‘Usuarios’.

 

            insert into usuarios (nombre, clave) values (‘Susana’,’River’);

 

  • Luego probamos la función haciendo la llamada a ‘devuelveclave’ de la siguiente manera:

 

             select retornarclave(‘Susana’);

 

 

            Ejercicio:

  • Crear una tabla con la siguiente estructura:

            create table medicamentos(

                         codigo serial,

                          nombre varchar(20),

                          laboratorio varchar(20),

                          precio decimal(5,2),

                          cantidad smallint,

                          primary key(codigo)

            );

 

  • Insertar los siguientes valores :

 

            insert into medicamentos             (nombre,laboratorio,precio,cantidad)values(‘Sertal’,’Roche’,5.2,100);

 

            insert into  medicamentos

            (nombre,laboratorio,precio,cantidad)values(‘Buscapina’,’Roche’,4.10,200);

 

            insert into medicamentos

             (nombre,laboratorio,precio,cantidad) values(‘Amoxidal 500′,’Bayer’,15.60,100);

 

            insert into medicamentos

            (nombre,laboratorio,precio,cantidad)  values(‘Paracetamol 500′,’Bago’,1.90,200);

 

            insert into medicamentos

            (nombre,laboratorio,precio,cantidad)  values(‘Bayaspirina’,’Bayer’,2.10,150);

 

            insert into medicamentos

            (nombre,laboratorio,precio,cantidad) values(‘Amoxidal jarabe’,’Bayer’,5.10,250);

 

  • Crear una función que retorne el precio promedio de la tabla medicamentos.

 

  • Imprimir el precio promedio de los medicamentos.

 

  • Imprimir los medicamentos que tienen un precio mayor al promedio.

 

 

Función SQL que no Retorna Datos

 

            Cuando queremos crear una función que no retorne dato lo debemos indicar luego de la palabra clave returns disponiendo el valor VOID. La sintaxis sería la siguiente:

 

 

 

CREATE OR REPLACE FUNCTION nombre_funcion(lista_parametros)

RETURNS VOID AS

comandos_sql

language sql;

 

 

            Veamos el siguiente ejemplo para entender un poco más las funciones que no retornan datos:

 

  • Crearemos una función que inserte dos registros en la tabla ‘Usuarios‘ creada en uno de los ejercicios anteriores:

 

            CREATE OR  REPLACE FUNCTION cargarusuarios() RETURNS VOID

            AS

            ‘

                         insert into usuarios (nombre, clave) values (”Marcelo”,”Boca”);

                         insert into usuarios (nombre, clave) values (”JuanPerez”,”Juancito”);

                         insert into usuarios (nombre, clave) values (”Susana”,”River”);

                         insert into usuarios (nombre, clave) values (”Luis”,”River”);

            ‘

            language sql;

  • Luego para llamar la función haremos lo siguiente:

            select cargarusuarios();

 

 

            Ejercicio:

 

  • Usar la información contenida en la tabla ‘Medicamentos ‘ y realizar lo siguiente:

 

  • Implementar una función que reciba el código de un medicamento y lo borre.
  • Llamar a la función.
  • Mostrar la tabla de medicamentos y verificar que se haya borrado el registro.

 

 

 


 

Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 

Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Related posts