InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial PL/SQL
Introducción a PLSQL
Programación con PL/SQL
Fundamentos de PL/SQL
Tipos de datos en PL/SQL
Operadores en PL/SQL
Estructuras de control en PL/SQL
Bloques PL/SQL
Cursores en PL/SQL
Cursores Implicitos en PL/SQL
Cursores Explicitos en PL/SQL
Cursores de actualización en PL/SQL
Excepciones en PL/SQL
Excepciones personalizadas en PL/SQL
Propagacion de excepciones en PL/SQL
Subprogramas en PL/SQL
Procedimientos almacenados en PL/SQL
Funciones en PL/SQL
Triggers en PL/SQL
Subprogramas en bloques anónimos
Paquetes en PL/SQL
Registros PL/SQL
Tablas PL/SQL
Tipo VARRAY
BULK COLLECT
Transacciones con PL/SQL
Transacciones autónomas
SQL Dinamico
Funciones integradas de PL/SQL
Secuencias
PL/SQL y Java
También puedes ver ...
Excepciones personalizadas en PL/SQL
Como conectar a ORACLE con Java
Recuperar datos BLOB de ORACLE
Trabajar con datos de tipo BLOB en ORACLE
PL/SQL y Java
Secuencias
Transacciones autónomas
SQL Dinamico
Funciones integradas de PL/SQL
Transacciones con PL/SQL

Afiliados
La Web del programador
MundoProgramacion


 

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;

 


Inicio | Tutorial PL/SQL Procedimientos almacenados en PL/SQLTutorial PL/SQLTriggers en PL/SQL Versión para imprimir Foros de consulta

 
Culo por Pedo
Respuesta recibida el [30/06/2008 04:01:05]
Me parece un sitio muy interezante...quedan muy claros los temas.

 
ESTUPIDO!!! por CHINAIS
Respuesta recibida el [08/07/2008 02:42:19]
ESA PERSONA ES TAN IGNORANTE AL PONERSE UN NICK COMO ESE...AMS

 
follero por cachero
Respuesta recibida el [10/07/2008 04:27:21]
EL tutorial esta de P.M

 
GATO por LIEBRE
Respuesta recibida el [27/08/2008 12:55:48]
ESte tutorial esta de punta madre de chinais

 
ayuda por Leonardo
Respuesta recibida el [16/09/2008 01:06:09]
muy interesante pero tengo una duda como hago paraque la funcion me devuleva dos parametros???????

 
respondinedole al bello leonar... por Marix
Respuesta recibida el [16/09/2008 07:04:14]
respondinedole al bello leonardo... una funcion solo retorna un valorr.. papacito

 
espuesta a leonardo por alfae2
Respuesta recibida el [01/10/2008 05:24:16]
Tendrás que hacer un procedimiento con parámetros OUT

 
Para que una funcion pueda dev... por devjoker
Respuesta recibida el [01/10/2008 07:52:18]
Para que una funcion pueda devolver mas de un valor, create un tipo propio - por ejemplo "persona", con nombre, apellidos y edad - y haz que la funcion devuelva "persona"

 
funcion q simula el retorno de dos valores por yo de nuevo
Respuesta recibida el [04/11/2008 10:55:49]
/* Formatted on 2008/11/04 14:48 (Formatter Plus v4.8.5) */
CREATE OR REPLACE FUNCTION fnc_ejemplo (
param1 IN VARCHAR2,
param_out1 OUT VARCHAR2
)
RETURN NUMBER
IS
RESULT NUMBER;
BEGIN
SELECT valor
INTO param_out1
FROM tabla;

result := 1;
RETURN RESULT;
exception
when ....then

END fnc_ejemplo;


/*Luego para usarlo*/
DECLARE
valor NUMBER;
valor_out VARCHAR2 (50);
BEGIN
valor := fnc_ejemplo ('PARAM', valor_out);
END;

/*
Explicacion:
la funcion fnc_ejemplo recibe dos parametros uno de tipo OUT y uno de tipo IN. Luego esa variable se setea en el cuerpo
de la funcion asignandole un valor. Como sabemos la funcion devuelve un valor en este caso es "result" que
es un NUMBER. ahora bien cuando llamamos a la funcion al asignarle el parametro valor_out se carga el valor en
esta variable y luego esta disponible para el resto del bloque*/

 
Llamar desde otra instancia por Pablo Condoleo
Respuesta recibida el [23/12/2008 06:00:44]
Y si la funcion se encuentra en otra instancia?? Como puedo acceder a la misma?
Necesito hacer un query
'SELECT campo1,funcion_de_otra_instancia(campo2)
from tabla,...'


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial PL/SQL Procedimientos almacenados en PL/SQLTutorial PL/SQLTriggers en PL/SQL Versión para imprimir

Funciones en PL/SQL
Autor: Pedro Herrarte Sánchez
Visitas: 58351 Fecha de publicación: 10/07/2006
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 49 | Comentarios: 0 | Archivo: Articulos
Visitas: 109 | Comentarios: 0 | Archivo: Articulos
Visitas: 158 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 34 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 285 | Comentarios: 1 | Archivo: Articulos
Categorias: Visual Basic .NET|C#
Visitas: 844 | Comentarios: 2 | Archivo: Articulos
Categorias: C#|ASP.NET|HTML DHTML|XML|JavaScript|ASP.NET|ASP|PHP|Visual Studio
Visitas: 712 | Comentarios: 1 | Archivo: Articulos
Categorias: Administración|Tutorial SQL
Visitas: 452 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 1057 | Comentarios: 1 | Archivo: Articulos
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 251 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS

Útimos temas recibidos en los foros ...
autogenerado de sugero social de salud por noemi ... [Visual Basic .NET] 15 29/06/2008
FORMULARIO ACCESS por jcifuentes ... [Access] 11 29/05/2007
Ysmael por Ysmael ... [SQL] 0 08/01/2009
Reflection por Maurito22 ... [C#] 2 06/01/2009
Programador por Robert ... [ORACLE] 0 07/01/2009
como insertar registros en un formulario de visual basic.net desde la base de datos sql server por orlan ... [SQL Server] 8 09/06/2008
quierocodigo de autogenerado del seguro por edwin garcia ramirez ... [Visual Basic .NET] 0 07/01/2009
Video gratis sobre AJAX con ASP.NET por alexxe ... [ASP.NET] 1 06/01/2009
calcular saldo acumulativo por cben ... [SQL] 5 30/12/2008
comparar 2 campos de 2 tablas usando el like por nani ... [SQL Server] 1 06/01/2009
Apagar ordenador remoto en C# por victoryiyo ... [C#] 1 07/01/2009
numero de AUTOGENERADO IPSS por carlos ... [Visual Basic .NET] 5 30/10/2008

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
22/10/2005 Actualización de datos. UPDATE    forma parte de...Tutorial SQL
11/07/2007 Aplicando formato de fecha y número a una variable.
22/10/2005 Vistas    forma parte de...Tutorial SQL
01/08/2006 Generar un fichero Excel con C# sin tener Excel instalado
06/11/2007 Cursores en Transact SQL    forma parte de...Tutorial de Transact SQL
01/01/2006 Borrado de datos. DELETE    forma parte de...Tutorial SQL
08/09/2007 Funciones en Transact SQL    forma parte de...Tutorial de Transact SQL
13/07/2006 Paquetes en PL/SQL    forma parte de...Tutorial PL/SQL
01/07/2008 LinQ To SQL - Un ejemplo sencillo
19/09/2007 Triggers en Transact SQL    forma parte de...Tutorial de Transact SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]