TIPOS DE DATOS COMUNES EN PL/SQL
NUMBER[(PRECISIÓN, ESCALA)] | RECORD |
CHAR[(LONGITUD)] | TABLE |
VARCHAR2(LONGITUD) | RAW(LONGITUD) |
DATE | LONG RAW |
TIMESTAMP | LONG |
TIMESTAMP WITH TIME [LOCAL] ZONE | BLOB |
BOOLEAN | CLOB |
REF CURSOR | NCLOB |
EXCEPTION | BFILE |
ROWID |
Los tipos de datos en PL/SQL definen el formato de una variable, constante o parametro (los parametros son usados para pasar valores y devolverlos de un procedimiento o función).
La lista anterior contiene los tipos de de dato más comúnmente utilizados en PL/SQL. Adicional a los ejemplos que se mostrarán acá, se puede referir al capitulo 3 de la «PL/SQL User’s Guide and Reference» para una lista completa y descripción de los tipos de datos.
Acá hay una breve descripción de los tipos de dato listados anteriormente:
◦NUMBER. Especifica el número de digitos(precisión) y el número de espacios decimales. El tipo NUMBER tiene muchos subtipos tales como DECIMAL y el INTEGER; refierase a la documentación de oacle para más información.
◦CHAR Es un tipo de dato de longitud fija. El tamaño default de una variable de tipo CHAR es 1, la longitud máxima es de 32767.
◦VARCHAR2 es un tipo de dato de longitud variable. Longitud máxima 32767. Para un mejor rendimiento, Oracle pre-ubica 2000 bytes de almacenamiento para todas las definciones de VARCHAR2 menores que2000 bytes .
◦DATE Soporta valores de tipo fecha y hora.
◦TIMESTAMP contiene una fecha/hora con fracción de milisegundos.
◦TIMESTAMP WITH TIME ZONE agrega el componente de Zona de tipo TIMESTAMP.
◦BOOLEAN variables que contienen TRUE, FALSE, o NULL y son usadas en condiciones lógicas, ej. CASE y sentencias IF. ej. IF VALID_ORDER THEN….
◦EXCEPTION es usada para definir nombres de excepciones definidas por el usuario, por ejemplo “customer_not_found”. .
◦REF CURSOR es un apuntador a un cursor en memoria. Es muy util para retornar sets de registros a procedimientos.
◦RECORD define un tipo compuesto, una colección de otras escalas o tipos compuestos.
◦TABLE define un arreglo delimitado de PL/SQL.
◦RAW y LONG RAW son datos binarios. LONG RAW ha sido declarado obsoleto en favor del tipo de dato BLOB.
◦BLOB es mejor para objetos binarios grandes.
◦LONG y CLOB son utilizados para objetos de tipo carácter muy grandes, es mejor utilizar el CLOB.
◦NCLOB es el denominado national character set long character object.
◦BFILE es un archivo binaro externo.
◦ROWID es una apuntador a una fila de una tabla.
DECLARACIÓN DE VARIABLES
Las variables son declaradas en la sección DECLARE del programa. Requieren un nombre y un tipo de dato. El nombre como todos los nombres en oracle , debe segir las siguientes reglas:
◦1 – 30 caracteres alfanuméricos.
◦Primer caracter debe ser alfabético.
◦Los Caracteres especiales válidos son _, $ and #
◦Se deben evitar palabras reservadas como: SELECT
En este ejemplo V_LASTNAME es una variables definida cn la clausula NOT NULL, esto significaque no puede contener un valor nulo. Una excepción se dispara si no se le asigna un valor inicial (ver el ejemplo a continuación). Sin embargo se puede asignar un valor inicial a una variable (en este ejemplo ‘SMITH‘ ). Esto se hace con el operador de asignación (:=) o con la palabra reservada DEFAULT.
El valor “NULL” implica que una sentencia de PL/SQL no operará. En el siguiente ejemplo se utiliza (ver linea 4) simplemente porque el bloque BEGIN es requerido, aunque no se quiera hacer nada simplemente lo que se quiere es demostrar la declaración y uso de una variable.
Ejemplo:
SQL> declare PL/SQL procedure successfully completed. NULL es una sentencia de no operación. |
Cuando se define una variable como NOT NULL y a esta no se le asigna ningún valor, se dispara una excepción. Ej:
SQL> declare 2 x number not null; 3 begin 4 null; 5 end; 6 / x number not null; * ERROR at line 2: ORA-06550: line 2, column 3: PLS-00218: a variable declared NOT NULL must have an initialization assignment |
Otro Ejemplo de declaración de variables:
SQL> declare PL/SQL procedure successfully completed. |
El ejemplo define las siguientes variables:
◦V_HIREDATE1 –> DATE. El valor default es NULL.
◦V_HIREDATE2 –> DATE inicializado con la fecha actual con SYSDATE.
◦V_TOTAL_SALES –> NUMBER que puede almacenar un total de 8 digitos con 2 digitos despues del punto decimal. Acepta valores desde -999999.99 hasta 999999.99. El valor default es NULL.
◦V_TOTAL_VALUE1 –> NUMBER que puede almacenar un total de 8 digitos con 2 digitos después del punto decimal. El valor default es 0.
◦V_TOTAL_VALUE2 –> NUMBER que puede almacenar un total de 8 digitos con 2 digitos después del punto decimal. El valor default es 0.
◦V_ORDER_VALID –> BOOLEAN inicializado en FALSE. puede ser usado en una sentencia CASE o IF ej: IF v_order_valid THEN …
◦V_LASTNAME es una variables de tipo caracter de una longitud de hasta 20 caracteres que no puede se r nula inicializada con ‘SMITH’.
◦C_CO_NAME –> CONSTANT. Las constantes tienen sus valores definidos cuando la variables es definida, su valor no puede ser cambiado (una excepcion occure si se intenta cambiar su valor).