domingo, 7 de agosto de 2011

Funciones en PL/SQL

Una función es un subprograma que devuelve un valor.
    La sintaxis para construir funciones es la siguiente:


CREATE [OR REPLACE]
FUNCTION <fn_name>[(<param1> IN <type>, <param2> IN <type>, ...)] 
RETURN <return_type> 
IS
  result <return_type>;
BEGIN
 
  return(result);
[EXCEPTION]  -- Sentencias control de excepcion
END [<fn_name>];
 
 El uso de OR REPLACE permite
 sobreescribir una función existente. Si se 
omite, y la función existe, se producirá, un error. 
    La sintaxis de los parámetros es la misma
 que en los procedimientos almacenado,
 exceptuando que solo pueden ser de entrada. 
    Ejemplo:


CREATE OR REPLACE
FUNCTION fn_Obtener_Precio(p_producto VARCHAR2) 
RETURN NUMBER
IS
  result NUMBER;
BEGIN
  SELECT PRECIO INTO result
  FROM PRECIOS_PRODUCTOS
  WHERE CO_PRODUCTO = p_producto;
  return(result);
EXCEPTION 
WHEN NO_DATA_FOUND THEN
  return 0;
END ;
 

 Si el sistema nos indica que el la función se ha creado con errores de 
compilación podemos ver estos errores de
 compilacion con la orden SHOW ERRORS en
 SQL *Plus.

    Una vez creada y compilada la función podemos ejecutarla de la siguiente forma:


DECLARE  Valor NUMBER;BEGIN Valor := fn_Obtener_Precio('000100');

END;  
 
 Las funciones pueden utilizarse en sentencias SQL de 
manipulación de datos (SELECT, UPDATE, INSERT y DELETE): 
SELECT CO_PRODUCTO, 
       DESCRIPCION,
       fn_Obtener_Precio(CO_PRODUCTO)
FROM PRODUCTOS; 




 

No hay comentarios:

Publicar un comentario