Listado completo de tutoriales

72 - Funciones SQL


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.

Luego la sintaxis para implementar una función SQL:

create or replace function [nombre de la función]([parámetros]) returns [tipo de dato que retorna]
as
 [comandos sql]
language sql

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

create or replace function sumar(integer,integer) returns integer 
AS 
  'select $1+$2;'
language sql;

Cada parámetro se lo accede luego mediante la posición que ocupa y se le antecede el caracter $. El o los comandos SQL deben ir entre simples comillas (si tenemos que utilizar las simples comillas en el comando SQL debemos disponer dos simples comillas seguidas) y separados por punto y coma. Luego indicamos al final que se trata de una función SQL.

Para llamar luego a esta función lo hacemos por ejemplo en un select:

select sumar(3,4);

Podemos acceder perfectamente a una o más tablas en la función. Confeccionaremos una función que acceda a la tabla usuarios:

 create table usuarios (
   nombre varchar(30),
   clave varchar(10)
 );

y rescate la clave de un usuario que le pasamos como parámetro:

 create or replace function retornarclave(varchar) returns varchar
 as
   'select clave from usuarios where nombre=$1;'
 language sql;

Luego para probar la función retornarclave debemos llamarla por ejemplo desde un select:

 select retornarclave('Susana');

Ingresemos el siguiente lote de comandos SQL en pgAdmin:

 create or replace function sumar(integer,integer) returns integer 
 AS 
   'select $1+$2;'
 language sql;

 -- Llamamos la función que acabamos de crear:
 select sumar(3,4);

 drop table if exists usuarios;
 
 -- Creamos la tabla usuarios:
 create table usuarios (
   nombre varchar(30),
   clave varchar(10)
 );

 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');

 -- Creamos una función que reciba una cadena con el nombre de usuario 
 -- y retorne la clave de dicho usuario:
 create or replace function retornarclave(varchar) returns varchar
 as
   'select clave from usuarios where nombre=$1;'
 language sql;

 -- Llamamos la función recuperando la clave del usuario llamada 'Susana':
 select retornarclave('Susana');

La ejecución de este lote de comandos SQL genera una salida similar a:

PostgreSQL pgAdmin funciones SQL


Retornar