lunes, 6 de septiembre de 2010

TIPOS DE DATOS EN FOXPRO

Todos los datos de Visual FoxPro tienen un tipo, como una descripción de los valores permitidos, y el intervalo y tamaño de los valores. Una vez especificado el tipo de datos que está usando, Visual FoxPro puede almacenar y manipular los datos de forma eficaz.

CHARACTER:
Elija el tipo de datos Character cuando desee incluir letras, números, espacios, símbolos y puntuación. Los campos o variables Character almacenan información de texto, como nombres, direcciones y números, que no se usa en los cálculos matemáticos. Por ejemplo, los números de teléfono o los códigos postales, aunque están formados en su mayor parte por números, se usan mejor como valores de tipo Character.

CURRENCY:
Use el tipo de datos Currency en lugar de Numeric para valores monetarios. Si especifica más de cuatro posiciones decimales en una expresión de tipo Currency, Visual FoxPro redondea a cuatro posiciones antes de evaluar la expresión.Para asignar el tipo de datos Currency, use el signo de dólar; EJEMPLO: money = $50.33moremoney = $675.43886.

DATE:
Elija el tipo de datos Date para almacenar fechas sin valores de hora. En los tipos de datos Date y DateTime, se aplica la regla siguiente:

  1. {00:00:00AM} equivale a {12:00:00AM}, medianoche.
  2. {00:00:00PM} equivale a {12:00:00PM}, mediodía.
  3. {00:00:00} a {11:59:59} equivale a {12:00:00AM} a {11:59:59AM}.
  4. {12:00:00} a {23:59:59} equivale a {12:00:00PM} a {11:59:59PM}.

DATE TIME:
Elija el tipo de datos con el que desea almacenar valores de fecha y hora, o de sólo fecha. Un valor DateTime se almacena en ocho bytes, dos enteros de cuatro bytes. En los tipos de datos date time se aplica la misma regla que en TP date.

DOUBLE:

Use el tipo de datos Double en lugar de Numeric cuando necesite más precisión, una cantidad fija de almacenamiento en la tabla o valores verdaderos de signo flotante. En una tabla, a diferencia de los datos de tipo Numeric, se determina la posición del signo decimal cuando escriba el valor.

FLOAT: Se incluye por razones de compatibilidad; el tipo de datos Float es equivalente a Numeric.

TIPO DE CAMPO GENERAL: Use el tipo de campo General para almacenar objetos OLE. El campo General contiene una referencia de diez bytes al contenido real del campo: una hoja de cálculo, un documento de procesador de textos o una imagen, creados por otra aplicación. Sin embargo, el tipo y la cantidad de datos dependen del servidor de Automatización que crea el objeto, y de si se vincula o incrusta el objeto OLE. Si vincula un objeto OLE, la tabla contiene sólo la referencia a los datos y a la aplicación que la creó. Si incrusta un objeto OLE, la tabla contiene una copia de los datos así como una referencia a la aplicación que la creó. El tamaño de un campo General sólo está limitado por la cantidad de espacio disponible en disco.

INTEGER: Use el tipo de campo Integer para valores numéricos no decimales cuando las limitaciones de rendimiento y de almacenamiento de tabla sean especialmente importantes. En las tablas, el tipo de campo entero se almacena como un valor binario de 4 bytes, por lo que requiere menos memoria que otros tipos de datos numéricos. Al ser un valor binario, no requiere conversión ASCII.

LOGICAL: Use el tipo de datos Logical cuando desee una forma eficaz de almacenar datos que sólo tengan dos valores. Los datos de tipo Logical se almacenan como verdadero (.T.) o falso (.F.).

MEMO: Use el tipo de campo Memo para almacenar bloques de datos. El campo Memo contiene una referencia de diez bytes al contenido real del memo. Sin embargo, el tamaño de los memos depende de la cantidad de datos que escriba en ellos. Los datos de campos Memo de registros de una tabla se almacenan en un archivo distinto con el mismo nombre que la tabla y la extensión .FPT. Los campos Memo sólo están limitados por la cantidad de espacio en disco disponible. Los memos de Visual FoxPro pueden contener cualquier tipo de datos, incluidos valores NULL, código ensamblador, controladores de impresora, etc. Puede almacenar el contenido de los campos Memo como cadenas residentes en memoria. Después, puede manipular estas cadenas con todas las funciones que operan sobre datos de tipo Character.

NUMERIC: Use datos de tipo Numeric para indicar magnitudes. Los valores de tipo Numeric contienen dígitos del 0 al 9 y, opcionalmente, un signo y una coma decimal. Visual FoxPro también admite valores hexadecimales para datos numéricos. Por ejemplo, el valor decimal 255 se puede representar como 0xFF. En campos de tipo Numeric, puede determinar la longitud de la parte decimal en tiempo de diseño cuando crea el campo. La longitud de la parte decimal es parte de la longitud total. Por ejemplo, si especifica una longitud de 6 para un campo numérico y un valor decimal de 4, el campo puede almacenar valores hasta 9,9999.

VARIANT: En campos de tipo Numeric, puede determinar la longitud de la parte decimal en tiempo de diseño cuando crea el campo. La longitud de la parte decimal es parte de la longitud total. Por ejemplo, si especifica una longitud de 6 para un campo numérico y un valor decimal de 4, el campo puede almacenar valores hasta 9,9999.

domingo, 5 de septiembre de 2010

¿QUE ES UN BLOG?
Un blog, o en español también una bitácora, es un sitio web periódicamente actualizado que recopila cronológicamente textos o artículos de uno o varios autores, apareciendo primero el más reciente, donde el autor conserva siempre la libertad de dejar publicado lo que crea pertinente.
El nombre bitácora está basado en los cuadernos de bitácora, cuadernos de viaje que se utilizaban en los barcos para relatar el desarrollo del viaje y que se guardaban en la bitácora. Aunque el nombre se ha popularizado en los últimos años a raíz de su utilización en diferentes ámbitos, el cuaderno de trabajo o bitácora ha sido utilizado desde siempre.
* En cada artículo de un blog, los lectores tienen la capacidad de dejar sus comentarios. A su vez, estos pueden ser contestados por el autor de manera que se va creando un diálogo. Otra característica de los Blogs es que suelen tener una temática específica. El autor escribe con total libertad y la temática es particular, los hay de tipo personal, periodístico, empresarial o corporativo, tecnológico, educativo (edublogs), políticos, etc.

lunes, 30 de noviembre de 2009

excepciones en oracle

Qué son las excepciones en Oracle ?

Las excepciones, presentes en la mayoría de los lenguajes de programación, sirven para tratar errores en tiempo de ejecución. En el sistema que nos ocupa, Oracle, sirven también para definir qué se debe hacer frente a errores en sentencias definidas por el usuario. Cuando se produce un error PL/SQL levanta una excepción y pasa el control a la sección excepción correspondiente al bloque PL/SQL.

El formato sería el siguiente:

BEGIN ......... ...... ......EXCEPTION WHEN THEN ; ...... [WHEN OTHERS THEN ;]END;
Excepciones predefinidas
Son aquellas que se disparan automáticamente al producirse determinados errores. Estas son las más comunes:
too_many_rows: Se produce cuando select … into devuelve más de una fila. no_data_found: se produce cuando un select …. into no devuelve ninguna fila. login_denied: error cuando intentamos conectarnos a Oracle con un login y clave no validos. not_logged_on: se produce cuando intentamos acceder a la base de datos sin estar conectados. program_error: se produce cuando hay un problema interno en la ejecución del programa. value_error: se produce cuando hay un error aritmético o de conversión. zero_divide: se puede cuando hay una división entre 0. dupval_on_index: se crea cuando se intenta almacenar un valor que crearía duplicados en la clave primaria o en una columna con restricción UNIQUE. invalid_number: se produce cuando se intenta convertir una cadena a un valor numérico.
Hay alguna más pero estas son las más utilizadas y tenemos que tener en cuenta que no es necesario declararlas en la sección DECLARE.
Excepciones definidas por el usuario
Son aquellas que crea el usuario. Para ello se requieren tres pasos:


1. Definición: se realiza en la zona de DECLARE con el siguiente formato: nombre_excepción EXCEPTION

2. Disparar o levantar la excepción mediante la orden raise: RAISE ;

3. Tratar la excepción en el apartado EXCEPTION: WHEN THEN ;

Para que esto quede más claro ponemos un ejemplo a continuación.
DECLARE...Importe_mal EXCEPTION;...BEGIN...IF precio NOT BETWEEN mínimo and máximo THEN RAISE importe_mal;END IF;...EXCEPTION WHEN importe_mal THEN DBMS_OUTPUT.PUT_LINE("Importe incorrecto"); ...END;
Otras excepciones
Existen otros errores internos de Oracle que no tienen asignada una excepción, sino un código de error y un mensaje, a los que se accede mediante funciones SQLCODE y SQLERRM. Cuando se produce un error de estos se trasfiere directamente el control a la sección EXCEPTION donde se tratara el error en la clausula WHEN OTHERS de la siguiente forma:


WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error'SQLCODESQLERRM.)
Utilización de RAISE_APPLICATION_ERROR
En el paquete DBMS_STANDARD se incluye un procedimiento llamado RAISE_APPLICATION_ERROR que nos sirve para levantar errores y definir mensajes de error. Su formato es el siguiente:


RAISE_APPLICATION_ERROR(numero_error,mensaje_error);
Es importante saber que el número de error está comprendido entre -20000 y -20999 y el mensaje es una cadena de caracteres de hasta 512 bytes. Este procedimiento crea una excepción que solo puede ser tratada en WHEN OTHERS.
Ponemos un ejemplo para que nos quede más claro.
CREATE or REPLACE PROCEDURE subir_horas (emple NUMBER, horas_subir NUMBER)IS horas_actuales NUMBER;BEGIN Select horas into horas_actuales from empleados where id_empleado=emple; if horas_actuales is NULL then RAISE_APPLICATION_ERROR(-20010,'No tiene horas'); else update empleados set horas=horas_actuales + horas_subir where id_empleado=emple; end if;End subir_horas;