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