InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosEmail
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
Transacciones con PL/SQL
Tipo VARRAY

Afiliados
La Web del programador
MundoProgramacion


Inicio | Tutorial PL/SQL SQL DinamicoTutorial PL/SQLSecuencias Versión para imprimir

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

 


Inicio | Tutorial PL/SQL SQL DinamicoTutorial PL/SQLSecuencias Versión para imprimir Foros de consulta

 
Mejor resto por Skent
Respuesta recibida el [24/05/2007 01:24:58]
En MOD, yo no diría que devulve el módulo ("Devuelve el modulo de dividir 20/15"). Esta función devuleve el resto.

 
MOD devuelve el modulo ... y e... por Devjoker
Respuesta recibida el [28/05/2007 06:47:29]
MOD devuelve el modulo ... y el modulo es el resto de la division entera!

 
Devuelve el resto. El uso de m... por skent
Respuesta recibida el [06/06/2007 06:30:37]
Devuelve el resto. El uso de módulo se dice por extensión del nombre de la función (MOD --> Módulo) y no es una manera correcta de llamarlo.

 
El nombre de módulo no se le d... por Devjoker
Respuesta recibida el [06/06/2007 09:41:59]
El nombre de módulo no se le da por extensión de la función, es la función quien recibe el nombre de la operación matemática módulo, que devuelve el resto de la division entera entre dos números. 

 
Definición de módulo por Hunty
Respuesta recibida el [02/07/2007 07:46:45]
Matemáticamente se define el módulo entre dos números como el resto de dividir el primero entre el segundo. La función MOD de PL/SQL calcula el módulo de los dos números que se le pasan como parámetros, es por esto por lo que recibe ese nombre. Skent, a ver si antes de aseverar de esa forma te coges un buscador y te informas...

 
Saben mucho... por efagut
Respuesta recibida el [25/07/2007 02:46:51]
Señores les estan enseñando y ahora quieren parecer todos como que supieran más que el escritor de este buen tutorial??

Cuidado no entendieron...

 
localizar espacio en un registro por Principiante
Respuesta recibida el [30/07/2007 11:26:46]
Hola a todos, me gustaria saber como localizo un espacio en blanco de un registro en una tabla?... necesito saber esto ya que necesito tomar las iniciales de un campo de la tabla donde esta el nombre completo de personas, es decir no esta separa do por apellido y nombre, todo esta en un campo y necesito sus iniciales solamente, como lo podria hacer?... gracias de antemano y pues yo no soy experto pero quiero serlo algun dia.... gracias...

 
No era mas fácil... por garraxxi
Respuesta recibida el [25/10/2007 07:21:43]
Decir que devuelve 5???

 
Espacios en un registro por Dark
Respuesta recibida el [01/11/2007 02:19:36]
ya solucionaste este problemilla?

 
Gracias Dark por Principiante
Respuesta recibida el [29/11/2007 08:08:16]
No

 
Campos Date Nulos por Cristobal
Respuesta recibida el [19/12/2007 10:16:25]
Tengo el siguiente problema:

Necesito hacer un sp que pueda extraer información de una tabla que contiene un campo tipo date que permite nulos.

Se requiere que el sp pueda hacer un filtro por ese campo.

El sp deberá seleccionar el registro si el valor de ese campo está entre 2 fechas ( periodo inicio y fin ) que se envían como parámetros.

Si los parámetros recibidos por el sp son nulos, entonces deberá seleccionar todos.

intente con la siguiente condicion pero no satisface todos los requerimientos:

nvl( fecha,sysdate ) between nvl( vd_fec_ini, nvl( fecha_activacion, sysdate ) ) and nvl( vd_fecfin, nvl( fecha_activacion, sysdate ) )

donde:
fecha : campo de la tabla
vd_fec_ini : parametro fecha inicio
vd_fecfin : parámetro fecha fin


Cualquier tip o sugerencia es bienvenido.

Gracias

 
RESP. Campos Date Nulos por Cristobal por BartySoft
Respuesta recibida el [02/01/2008 09:24:46]
espero que esto te sirva de algo.
Saludos

select fecha from tabla c
where (c.fecha >= vd_fec_ini or vd_fec_ini is NULL)
and (c.fecha <= vd_fec_fin or vd_fec_fin is NULL)
order by c.fecha

 
(+) por ARIEL
Respuesta recibida el [06/02/2008 12:42:35]
HOLA PARA QUE SIRVE ESTO

T.ID(+) = XXX
SALUDOS GRACIAS

 
Es un outer join , pero las pr... por Devjoker
Respuesta recibida el [06/02/2008 01:13:11]
Es un outer join , pero las preguntas en los foros.

 
RESP: localizar espacio en un registro por Principiante por Chuky
Respuesta recibida el [15/02/2008 05:42:07]
Mira a ver si te vale esto, se que llego un poco tarde pero por si aun no lo habias solucionado...

select substr(campo,1,1)||substr(campo,instr(campo,' ',1,1)+1,1)||substr(campo,instr(campo,' ',1,2)+1,1)
from tabla

 
Mod por el pipe
Respuesta recibida el [01/04/2008 10:05:06]
 que ladilla son explicando el Mod, tienen que buscarse unas mujeres urgente!!!


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

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial PL/SQL SQL DinamicoTutorial PL/SQLSecuencias Versión para imprimir

Funciones integradas de PL/SQL
Autor: Pedro Herrarte Sánchez
Visitas: 65556 Fecha de publicación: 21/07/2006
Pedro Herrarte, es consultor tecnológico en nCapas Software(empresa de la que además es fundador), donde realiza tareas de consultoría, análisis y desarrollo.

Ha trabajado con muchas tecnologías ... SQL Server, T-SQL, ORACLE, PL/SQL, ASP.NET, ASP, CGI , C#, C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...

Es especialista en tecnologías .NET, entornos Web, y bases de datos, especialmente SQL Server y ORACLE.

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



devjoker  Lo más nuevo ... Donde se habla ... 
03/04/2008 LINQ con métodos Extensores y expresiones lambda    forma parte de...Métodos extensores
03/04/2008 Métodos Extensores: SELECT    forma parte de...Métodos extensores
03/04/2008 Almacenamiento (1)    forma parte de...Tutorial de Sistemas Informaticos
28/03/2008 Mapa de configuracion de WCF
28/03/2008 LinQ To SQL - Un ejemplo sencillo
25/03/2008 Sitios Web de ejemplo ASP.NET
22/03/2008 Problemas al conectar a redes wifi con Windows Vista
19/03/2008 Service Pack 1 de Windows Vista

Útimos temas recibidos en los foros ...
Insertar datos en un grid manualmente por flakita ... [C#] 0 09/04/2008
ayuda con un select por Manu ... [mySQL] 8 25/07/2007
CHASIS DE UN PC CUALQUIERA por carolina ... [WIN 98/NT/2000/XP] 5 23/11/2006
Q PASA JENTE por torrichi ... [Java] 2 25/03/2008
LLINQ to SQL por Javier ... [C#] 1 09/04/2008
Agendar tarea por dia pero q pueda ser a diferente hora cada dia por Orlan ... [C#] 1 09/04/2008
Ventana Popup por Maurito22 ... [ASP.NET] 1 31/03/2008
No se puede abrir el archivo fisico por ron ... [C#] 1 07/04/2008
Data report visual basic 6.0 impresion con codigo por Andres ... [Visual Basic 6.0] 8 19/11/2007
Como abrir un docuemto de word desde c# y leer las palabras para luego enviar a access por llen ... [C#] 1 08/04/2008
sentencia for por .net ... [C#] 2 08/04/2008
Leer campos blob de oracle en lenguaje visual basic por janito ... [Visual Basic 6.0] 0 08/04/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 Insertar datos. INSERT    forma parte de...Tutorial SQL
24/05/2007 Tipos de datos en Transact SQL    forma parte de...Tutorial de Transact SQL
12/01/2006 Programación con PL/SQL    forma parte de...Tutorial PL/SQL
16/10/2006 Delegados y eventos    forma parte de...Tutorial C#
14/05/2007 Fundamentos de Transact SQL    forma parte de...Tutorial de Transact SQL
31/03/2006 Operadores en PL/SQL    forma parte de...Tutorial PL/SQL
11/09/2006 Trabajar con datos de tipo BLOB en ORACLE
12/01/2006 Introducción a PLSQL    forma parte de...Tutorial PL/SQL
20/03/2008 Funciones integradas de Transact SQL (I)    forma parte de...Tutorial de Transact SQL
28/08/2006 Ubuntu en VmWare con VMware Tools

 

Encuesta
¿Cual es tu lenguaje de programación favorito?
[Ver] [Votar]