Beruflich Dokumente
Kultur Dokumente
Almacenadas
Las funciones guardan mucha similitud con los procedimientos, la diferencia es que una
funcin debe devolver un valor propio de la funcin, la cual puede ser asignada a una
variable o funcin. Debido a este mecanismo las funciones pueden ser utilizadas dentro de
sentencias SQL, adems de poder ser usadas en bloques annimos, procedimientos u otras
funciones.
DECLARACIN DE FUNCIONES
Antes de mostrar un ejemplo de funcin, veamos primero la sintaxis de una:
FUNCTION <NOMBRE_FUNCION> (<PARAMETROS>)
RETURN <TIPO_DATO_RETORNO>
IS
<VARIABLES>
BEGIN
<CODIGO PL/SQL>
END;
Dnde:
<CODIGO PL/SQL>: Cdigo PL/SQL que ejecutar la funcin cada vez que sea
llamada.
Vemos un ejemplo:
01 DECLARE
02
--Declaramos las variables de nuestro bloque annimo.
03
V_VAR_SUMA
NUMBER;
04
05
--Declaramos la funcin SUMAR_NUMEROS
06
07
08
09
10
11
12
13
14
15
16
FUNCTION SUMAR_NUMEROS(P_NUMEROA
NUMBER,
P_NUMEROB
NUMBER)
--El tipo de dato que devolver la funcin es NUMBER
RETURN NUMBER
IS
--Creamos una variable para almacenar el valor de la operacin.
V_RESULTADO
NUMBER;
BEGIN
-- Operamos
V_RESULTADO := P_NUMEROA + P_NUMEROB;
FUNCIONES ALMACENADAS
Al igual que en los procedimientos, las funciones tambin pueden ser almacenadas en la
base de datos. Para almacenar una funcin en la base de datos slo debemos adicionar la
palabra CREATE a la declaracin de la funcin.
Para compilar o almacenar una funcin en una base de datos se debe ejecutar slo el cdigo
de la declaracin del procedimiento sin el bloque annimo.
01 --Declaracin de la funcin
02 CREATE OR REPLACE FUNCTION HR.SUMAR_NUMEROS(P_NUMEROA
NUMBER,
03
P_NUMEROB
NUMBER)
04 --El tipo de dato que devolver la funcin es NUMBER
05
RETURN NUMBER
06
IS
07
--Creamos una variable para almacenar el valor de la operacin.
08
09
10
11
12
V_RESULTADO
NUMBER;
BEGIN
-- Operamos
V_RESULTADO := P_NUMEROA + P_NUMEROB;
Puedes utilizar las palabras reservadas CREATE OR REPLACE, de sta manera no saldr
un error cuando intentes compilar tu funcin por segunda vez.
Al crear una funcin almacenada, SQL Developer nos mostrar el siguiente mensaje:
DECLARE
V_VARIABLE NUMBER;
BEGIN
--Almacenamos el valor de la funcin almacenada
--en una variable para imprimirlo posteriormente.
V_VARIABLE := HR.SUMAR_NUMEROS(300,50);
08
--Mostramos el resultado de la operacin
09
DBMS_OUTPUT.PUT_LINE('La suma es: ' || V_VARIABLE);
10 END;
La suma es: 350
Adicionalmente, las funciones pueden ser usadas en sentencias SQL, veamos un ejemplo
para sumar los campos min_salary y max_salary de la tabla hr.jobs:
1 -- Usamos la funcin HR.SUMAR_NUMEROS, para realizar
2 -- una suma con los campos min_salary y max_salary
3
-- de la tabla hr.jobs
4
SELECT job_id,
5
job_title,
6
min_salary,
7
max_salary,
8
HR.SUMAR_NUMEROS(min_salary,max_salary) as SUMA
9
FROM hr.jobs;
JOB_ID
JOB_TITLE
MIN_SALARY
MAX_SALARY
SUMA
---------- ----------------------------------- ---------- ------------------AD_PRES
President
20080
40000
60080
AD_VP
Administration Vice President
15000
30000
45000
AD_ASST
Administration Assistant
3000
6000
9000
FI_MGR
Finance Manager
8200
16000
24200
FI_ACCOUNT Accountant
4200
9000
13200
AC_MGR
Accounting Manager
8200
16000
24200
AC_ACCOUNT Public Accountant
4200
9000
13200
SA_MAN
Sales Manager
10000
20080
30080
SA_REP
Sales Representative
6000
12008
18008
PU_MAN
Purchasing Manager
8000
15000
23000
PU_CLERK
Purchasing Clerk
2500
5500
8000
JOB_ID
MAX_SALARY
------------------ST_MAN
14000
ST_CLERK
5000
JOB_TITLE
MIN_SALARY
SUMA
----------------------------------- ---------- ---------Stock Manager
5500
Stock Clerk
7008
2008
8500
SH_CLERK
5500
IT_PROG
14000
MK_MAN
24000
MK_REP
13000
HR_REP
13000
PR_REP
15000
Shipping Clerk
8000
Programmer
2500
4000
10000
Marketing Manager
9000
15000
Marketing Representative
4000
9000
4000
9000
4500
10500
El uso de funciones son muy tiles en el caso de necesitar realizar operaciones entre
columnas de una o varias tablas, de sta manera podras disminuir la complejidad de tus
consultas SQL.