miércoles, 11 de abril de 2012

Tarea 2 : Tipos de Datos PL/SQL

Tipos de Datos PL/SQL


VARCHAR2 : Cadena de caracteres de longitud variable con un máximo de size bytes de longitud. Debe especificar el tamaño


NVARCHAR2 : De longitud variable de cadena nacional, el conjunto de caracteres que tiene un máximo tamaño de bytes de longitud. 
Debe especificar el tamaño

CHAR : Los datos de caracteres de longitud fija de bytes de tamaño de longitud. Esto se debe utilizar para los datos de longitud fija. 

Nchar : De caracteres de longitud fija nacional de conjunto de datos de tamaño bytes de longitud.Esto se debe utilizar para los datos de longitud fija.

NUMBER : Número de tener la precisión p y escala s.

PLS_INTEGER : enteros con signo 
Los valores PLS_INTEGER menos espacio de almacenamiento y ofrecer un mejor rendimiento que los valores numéricos.
Así que utilice PLS_INTEGER donde se puede


BINARY_INTEGER : enteros con signo (mayor versión más lenta de PLS_INTEGER)

DATE Intervalo de fechas válido

TIMESTAMP : el número de dígitos en la parte fraccionaria del campo de fecha y hora SEGUNDO.

INTERVAL YEAR : Tiempo en años y meses, donde year_precision es el número de dígitos en el campo de fecha y hora AÑO.

INTERVAL DAY: El tiempo en días, horas, minutos y segundos. 
day_precision es el número máximo de dígitos en el 'DIA'  fractional_seconds_precisiones el número máximo de decimales en el segundo campo.

RAW : Datos binarios de bytes de tamaño de longitud.
Debe especificar el tamaño de un valor RAW.

ROWID Cadena hexadecimal que representa la dirección única de una fila en su tabla.
(Sobre todo para los valores devueltos por el ROWID pseudocolumna.)

UROWID : Cadena Hex en representación de la dirección lógica de una fila de una tabla organizada por índices

MLSLABEL : Formato binario de un sistema de tipo de datos de funcionamiento label

CLOB : Carácter y objeto grande

NCLOB : Character Large Object Nacional

BLOB: Binary Large Object

BFILE: puntero a un archivo binario en el disco

XMLType: De datos XML



3)  Funciones de conversión entre tipos de datos. 


Aqui algunos ejemplos para adicionar y sustraer días y meses y encontrar la diferencia entre
fechas en Oracle. Estos ejemplos toman el resultado de la tabla "dual. La tabla Dual es una
tabla virtual que existe en todas las Bases de datos Oracle. Muchas veces hemos usado la
consulta SELECT sysdate FROM dual; la cual simplemente nos retorna la fecha y hora
actual.


Ajustar Dias, Semanas, Horas y minutos


Para adicionar y sustraer días a una fecha, simplemente usamos los signos + o -
respectivamente. Algunos ejemplos:


SELECT sysdate + 7 FROM dual;


salida:
SYSDATE+7
18/04/12
------------------------------------------------------------------------
SELECT sysdate - 30 FROM dual;


salida
SYSDATE-30
12/03/12
--------------------------------------------------------------------------------
SQL> SELECT to_char(sysdate - 14, 'MM/DD/YYYY HH:MI AM') FROM dual;


salida
TO_CHAR(SYSDATE-14,'MM/DD/YYYYHH:MIAM')
03/28/2012 12:44 AM


--------------------------------------------------------------------------------
En el primer ejemplo, vemos que la consulta retorna la fecha siete días apartir de hoy. La segunda
retorna la fecha de hace 30 días. En la tercera, se ha usado la función de conversión to_char,
para ver las horas y minutos. Esto nos muestra que mientras la fecha, ha cambiado, el tiempo no
cambia.
Los ejemplos primero y tercero ademas muestran como el adicionar días, puede ser útil para
computar semanas. Si ud desea simplificar el computo de semanas, podías usar querys de este
tipo:
SQL> SELECT sysdate + (7 * 3) FROM dual;


salida
SYSDATE+(7*3) 02/05/12
--------------------------------------------------------------------------------


Para trabajar con meses y años (cada uno de los cuales puede variar en número de días)
Oracle ofrece la función numtoyminterval. Esta trabaja en forma similar a la función
numtodsinterval tomando un numero y una cadena string. Las opciones válidas para esta
función son: ‘YEAR’ or ‘MONTH’.


SELECT to_char(sysdate + numtoyminterval(5, 'MONTH'), 'MM/DD/YYYY') FROM dual;


salida
TO_CHAR(SYSDATE+NUMTOYMINTERVAL(5,'MONTH'),'MM/DD/YYYY')
09/11/2012
------------------------------------------------------------------------------------------


SELECT to_char(sysdate + numtoyminterval(2, 'YEAR'), 'MM/DD/YYYY') FROM dual;


salida
TO_CHAR(SYSDATE+NUMTOYMINTERVAL(2,'YEAR'),'MM/DD/YYYY')
04/11/2014
------------------------------------------------------------------------------------------


Comparar fechas


Suponga que deseamos comparar algunas fechas y encontrar el número de días entre ellas. Para
ver este resultado en días, simplemente basta con usar el operador -, de la siguiente manera:


SELECT TO_DATE('11/04/2006', 'MM/DD/YYYY') - sysdate FROM dual;


salida
TO_DATE('11/04/2006','MM/DD/YYYY')-SYSDATE
-1985,0386111111111111
------------------------------------------------------------------------------------------


El resultado es expresado en días, incluyendo horas fracción de horas. Por supuesto si se desea
semanas, se podría dividir el resultado entre 7. De manera similar, si se desea obtener horas, se
debería multiplicar por 24, pero si se desea meses, entonces se podría usar la función
months_between.


SELECT months_between(sysdate, to_date('01/01/2006', 'MM/DD/YYYY')) FROM dual;


salida
MONTHS_BETWEEN(SYSDATE,TO_DATE('01/01/2006','MM/DD/YYYY'))
75,323867607526881
------------------------------------------------------------------------------------------


Retornar la mayor y menor fecha dentro de un conjunto


Las funciones greatest y least pueden ser usadas en fechas para retornar la menor o la mayor
fecha.


SELECT greatest(sysdate,sysdate+1, to_date('09/11/2005','MM/DD/YYYY'), to_date('12/25/
2005','MM/DD/YYYY'))FROM dual;


salida


GREATEST(SYSDATE,SYSDATE+1,TO_DATE('09/11/2005','MM/DD/YYYY'),TO_DATE('12/25/2005','MM/DD/YYYY'))


12/04/12


------------------------------------------------------------------------------------------


SELECT least(sysdate,sysdate+1,to_date('09/11/2005','MM/DD/YYYY'), to_date('12/25/
2005','MM/DD/YYYY'))FROM dual;


salida


LEAST(SYSDATE,SYSDATE+1,TO_DATE('09/11/2005','MM/DD/YYYY'),TO_DATE('12/25/2005','MM/DD/YYYY'))


11/09/05
------------------------------------------------------------------------------------------


Cual es el último día de este mes?


La función last_day retorna el último día del mes pasado como parámetro.


select last_day(sysdate) from dual;


salida
LAST_DAY(SYSDATE) 30/04/12


------------------------------------------------------------------------------------------


Siguiente día de la semana despues de una fecha


La función next_day retorna la fecha de la próxima ocurrencia de un día de la
semana(’Monday’, ‘Tuesday’, etc.) después de una fecha dada. ejemplo: consultar la fecha del
próximo domingo:


select next_day(sysdate,'Domingo') from dual;


salida
NEXT_DAY(SYSDATE,'DOMINGO') 15/04/12


------------------------------------------------------------------------------------------


3)  Funciones para manipular fechas



TO_CHAR

Con esta función es posible convertir números a caracteres, otra versión de la misma función nos permite hacer lo mismo con los tipos de dato asociados con fechas y tiempo. De igual manera que con los números, TO_CHAR ofrecen un gran número de posibilidades para formatear fechas y que estas aparezcan tal y como queramos.

Ejemplo:

Convertir números:

Begin
Dbms_output.put_line (to_char (sysdate));

Dbms_output.put_line (to_char (systimestamp));
End;

Resultado:

11/04/12
11-ABR-12 01.10.57,711000000 AM -03:00



Devuelve dia de la "de"semana y el nombre del mes

Begin
dbms_output.put_line(to_char (sysdate,'day,dd "de" Month "de" YYYY' ));
end;

Resultado
miércoles,11 de Abril      de 2012
Statement processed.

No hay comentarios:

Publicar un comentario