Funciones integradas de PL/SQL

    PL/SQL tiene un gran número de funciones incorporadas, sumamente útiles. A continuación vamos a ver algunas de las más utilizadas.

SYSDATE

    Devuelve la fecha del sistema:

	
SELECT SYSDATE
FROM DUAL;

NVL

    Devuelve el valor recibido como parámetro en el caso de que expresión sea NULL,o expresión en caso contrario.

 
NVL(<expresion>, <valor>)

    El siguiente ejemplo devuelve 0 si el precio es nulo, y el precio cuando está informado:


SELECT
CO_PRODUCTO, NVL(PRECIO, 0) FROM PRECIOS;

DECODE

     Decode proporciona la funcionalidad de una sentencia de control de flujo if-elseif-else.


DECODE
(<expr>, <cond1>, <val1>[, ..., <condN>, <valN>], <default>)

    Esta función evalúa una expresión "<expr>", si se cumple la primera condición "<cond1>" devuelve el valor1 "<val1>", en caso contrario evalúa la siguiente condición y así hasta que una de las condiciones se cumpla. Si no se cumple ninguna condición se devuelve el valor por defecto. 

     Es muy común escribir la función DECODE identada como si se tratase de un bloque IF.


SELECT DECODE (co_pais, /* Expresion a evaluar */
'ESP', 'ESPAÑA', /* Si co_pais = 'ESP' ==> 'ESPAÑA' */
'MEX', 'MEXICO', /* Si co_pais = 'MEX' ==> 'MEXICO' */
'PAIS '||co_pais)/* ELSE ==> concatena */
FROM PAISES;


TO_DATE

    Convierte una expresión al tipo fecha. El parámetro opcional formato indica el formato de entrada de la expresión no el de salida.


TO_DATE
(<expresion>, [<formato>])

    En este ejemplo convertimos la expresion '01/12/2006' de tipo CHAR a una fecha (tipo DATE). Con el parámetro formato le indicamos que la fecha está escrita como día-mes-año para que devuelve el uno de diciembre y no el doce de enero.


SELECT TO_DATE
('01/12/2006',
'DD/MM/YYYY')
FROM DUAL;

    Este otro ejemplo muestra la conversión con formato de día y hora.


SELECT TO_DATE
('31/12/2006 23:59:59',
'DD/MM/YYYY HH24:MI:SS')
FROM DUAL;

TO_CHAR

    Convierte una expresión al tipo CHAR. El parámetro opcional formato indica el formato de salida de la expresión.


TO_CHAR
(<expresion>, [<formato>])

	
SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYYY')
FROM DUAL;

TO_NUMBER

     Convierte una expresion alfanumérica en numerica. Opcionalmente podemos especificar el formato de salida.


TO_NUMBER
(<expresion>, [<formato>])
   

	
SELECT TO_NUMBER ('10')
FROM DUAL;

TRUNC

    Trunca una fecha o número.

    Si el parámetro recibido es una fecha  elimina las horas, minutos y segundos de la misma.   


SELECT TRUNC(SYSDATE)FROM DUAL;

    Si el parámetro es un número devuelve la parte entera.


SELECT TRUNC(9.99)FROM DUAL;

LENGTH

    Devuelve la longitud de un tipo CHAR.


SELECT LENGTH('HOLA MUNDO')FROM DUAL;

INSTR

    Busca una cadena de caracteres dentro de otra. Devuelve la posicion de la ocurrencia de la cadena buscada.

    Su sintaxis es la siguiente:


INSTR
(<char>, <search_string>, <startpos>, <occurrence> )


SELECT INSTR('AQUI ES DONDE SE BUSCA', 'BUSCA', 1, 1 )
FROM DUAL;

REPLACE

    Reemplaza un texto por otro en un expresion de busqueda.


REPLACE
(<expresion>, <busqueda>, <reemplazo>)

    El siguiente ejemplo reemplaza la palabra 'HOLA' por 'VAYA' en la cadena 'HOLA MUNDO'.

	SELECT REPLACE ('HOLA MUNDO','HOLA', 'VAYA')-- devuelve VAYA MUNDO
FROM DUAL;

SUBSTR

    Obtiene una parte de una expresion, desde una posición de inicio hasta una determinada longitud.


SUBSTR
(<expresion>, <posicion_ini>, <longitud> )


SELECT SUBSTR('HOLA MUNDO', 6, 5) -- Devuelve MUNDO
FROM DUAL;

UPPER

     Convierte una expresion alfanumerica a mayúsculas.


SELECT UPPER('hola mundo') -- Devuelve HOLA MUNDO
FROM DUAL;
 

LOWER

     Convierte una expresion alfanumerica a minúsculas.


SELECT LOWER('HOLA MUNDO') -- Devuelve hola mundo
FROM DUAL;
 

ROWIDTOCHAR

     Convierte un ROWID a tipo caracter.

SELECT ROWIDTOCHAR(ROWID) 
FROM DUAL;

RPAD

    Añade N veces una determinada cadena de caracteres a la derecha una expresión. Muy util para generar ficheros de texto de ancho fijo.


RPAD
(<expresion>, <longitud>, <pad_string> )

     El siguiente ejemplo añade puntos a la expresion 'Hola mundo' hasta alcanzar una longitud de 50 caracteres.


SELECT RPAD('Hola Mundo', 50, '.')
FROM DUAL;

LPAD

    Añade N veces una determinada cadena de caracteres a la izquierda de una expresión. Muy util para generar ficheros de texto de ancho fijo.


LPAD
(<expresion>, <longitud>, <pad_string> )

     El siguiente ejemplo añade puntos a la expresion 'Hola mundo' hasta alcanzar una longitud de 50 caracteres.


SELECT LPAD('Hola Mundo', 50, '.')
FROM DUAL;

RTRIM

     Elimina los espacios en blanco a la derecha de una expresion


SELECT RTRIM ('Hola Mundo ')
FROM DUAL;

LTRIM

     Elimina los espacios en blanco a la izquierda de una expresion


SELECT LTRIM (' Hola Mundo')
FROM DUAL;

TRIM

    Elimina los espacios en blanco a la izquierda y derecha de una expresion


SELECT
TRIM (' Hola Mundo ')
FROM DUAL;

MOD

     Devuelve el resto de la división entera entre dos números.


MOD
(<dividendo>, <divisor> )

	SELECT MOD(20,15) -- Devuelve el modulo de dividir 20/15 
FROM DUAL

 

Pedro  Herrarte  Sánchez
Funciones integradas de PL/SQL
Pedro Herrarte Sánchez

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 (ASP.NET, ASP.NET MVC,jQuery, HTML5), bases de datos (SQL Server y ORACLE) e integración de sistemas. Es experto en desarrollo (C#, 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). Pedro es MCP y MAP 2012, es fundador, diseñador y programador de www.devjoker.com..
Fecha de alta:21/07/2006
Última actualizacion:21/07/2006
Visitas totales:580389
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com