Oracle Tipos de datos PL/SQL: booleano, número, fecha [Ejemplo]

⚡ Resumen inteligente

Los tipos de datos PL/SQL definen cómo Oracle Almacena, gestiona y restringe cada valor en un bloque. Se agrupan en familias de caracteres, números, booleanos, fechas y objetos grandes (LOB), cada una con su propio formato de almacenamiento, límites de tamaño y reglas de asignación.

  • 🔤 Carácter: CHAR tiene una longitud fija, VARCHAR2 tiene una longitud variable, y NCHAR y NVARCHAR2 utilizan el conjunto de caracteres nacional.
  • 🔢 Número: La función NUMBER almacena valores de punto fijo o flotante con una precisión de hasta 38 dígitos.
  • Booleano: Indica VERDADERO o FALSO y se utiliza principalmente en lógica condicional.
  • ???? Fecha: Almacena la fecha y la hora, tomando como valor predeterminado la medianoche cuando no se especifica ninguna hora.
  • 🗂️ LOB: Los formatos BLOB, CLOB, NCLOB y BFILE almacenan grandes cantidades de datos no estructurados de hasta 128 TB.
  • ???? Mejora la práctica: Es preferible usar VARCHAR2 en lugar de CHAR y LOB en lugar de LONG para ahorrar memoria y garantizar la compatibilidad futura.
  • 🔗 Alcance: Los tipos SQL se aplican a las columnas de la tabla; los tipos PL/SQL se utilizan dentro de los bloques PL/SQL.

Oracle Tipos de datos PL/SQL

¿Qué son los tipos de datos PL/SQL?

Tipos de datos En PL/SQL se define cómo se almacenarán, manejarán y tratarán los datos. Oracle durante el almacenamiento y el procesamiento. Los tipos de datos están asociados con un formato de almacenamiento específico y restricciones de rango. En OracleA cada valor o constante se le asigna un tipo de dato.

La principal diferencia entre PL/SQL y SQL Los tipos de datos SQL se limitan a las columnas de la tabla, mientras que los tipos de datos PL/SQL se utilizan en la bloques PL/SQLHablaremos más sobre esto más adelante en el tutorial.

A continuación se muestra un diagrama de los diferentes Oracle Tipos de datos PL/SQL:

Diferentes tipos de datos en PL/SQL
Diferentes tipos de datos en PL/SQL

Tipo de datos de carácter PL/SQL

Este tipo de datos almacena caracteres alfanuméricos en formato de cadena. Los valores literales siempre deben ir entre comillas simples al asignarlos a un tipo de datos CHARACTER.

Este tipo de datos de carácter se clasifica además de la siguiente manera:

  • Tipo de datos CHAR (tamaño de cadena fijo)
  • Tipo de datos VARCHAR2 (tamaño de cadena variable)
  • Tipo de datos VARCHAR
  • NCHAR (tamaño de cadena fijo nativo)
  • NVARCHAR2 (tamaño de cadena variable nativa)
  • LARGO y LARGO CRUDO
Tipo de datos Mareas Ideales para Lecciones Sintaxis
CHAR Este tipo de datos almacena un valor de cadena, y el tamaño de la cadena es fijo en el momento de la declaración. variable.

  • Oracle rellena con espacios en blanco la variable si no ocupa todo el tamaño declarado, por lo que Oracle Asigna la memoria para el tamaño declarado aunque la variable no la llene.
  • La restricción de tamaño es de 1 a 2000 bytes.
  • CHAR es más apropiado cuando se maneja un tamaño fijo de datos.
grade CHAR;
manager CHAR (10):= 'guru99';

Explicación de sintaxis:

  • La primera instrucción declara la variable 'grade' de tipo de datos CHAR con un tamaño máximo de 1 byte (valor predeterminado).
  • La segunda instrucción declara la variable 'manager' de tipo de datos CHAR con un tamaño máximo de 10 y le asigna el valor 'guru99', que es de 6 bytes. Oracle En este caso, se asignan 10 bytes en lugar de 6.
VARCHAR2 Este tipo de datos almacena una cadena de texto, pero su longitud no es fija.

  • La restricción de tamaño es de 1 a 4000 bytes para una columna de tabla y de 1 a 32767 bytes para una variable.
  • El tamaño se define para cada variable en el momento de su declaración.
  • Oracle Asigna memoria solo después de que se define la variable, por lo que utiliza la longitud real de la cadena almacenada en lugar del tamaño declarado.
  • Siempre es recomendable usar VARCHAR2 en lugar de CHAR para optimizar el uso de la memoria.
manager VARCHAR2(10) := 'guru99';

Explicación de sintaxis:

  • La instrucción declara la variable 'manager' de tipo de datos VARCHAR2 con un tamaño máximo de 10 y le asigna 'guru99', que son 6 bytes. Oracle Aquí se asignan solo 6 bytes de memoria.
VARCHAR Esto es sinónimo del tipo de datos VARCHAR2.

  • Siempre es recomendable utilizar VARCHAR2 en lugar de VARCHAR para evitar cambios de comportamiento.
manager VARCHAR(10) := 'guru99';

Explicación de sintaxis:

  • La instrucción declara la variable 'manager' de tipo de datos VARCHAR con un tamaño máximo de 10 y le asigna 'guru99', 6 bytes. Oracle Asigna solo 6 bytes, de forma similar a VARCHAR2.
NCHAR Este tipo de datos es el mismo que CHAR, pero el conjunto de caracteres es el conjunto de caracteres nacional.

  • Este juego de caracteres se puede definir para la sesión utilizando NLS_PARAMETERS.
  • El juego de caracteres puede ser UTF16 o UTF8.
  • La restricción de tamaño es de 1 a 2000 bytes.
native NCHAR(10);

Explicación de sintaxis:

  • La instrucción declara la variable 'native' de tipo de datos NCHAR con un tamaño máximo de 10.
  • La longitud depende del número de bytes por carácter definido en el conjunto de caracteres.
NVARCHAR2 Este tipo de datos es el mismo que VARCHAR2, pero el conjunto de caracteres es el conjunto de caracteres nacional.

  • Este juego de caracteres se puede definir para la sesión utilizando NLS_PARAMETERS.
  • El juego de caracteres puede ser UTF16 o UTF8.
  • La restricción de tamaño es de 1 a 4000 bytes.
Native_var NVARCHAR2(10):= 'guru99';

Explicación de sintaxis:

  • La instrucción declara la variable 'Native_var' de tipo de datos NVARCHAR2 con un tamaño máximo de 10.
LARGO y LARGO CRUDO Este tipo de datos almacena texto extenso o datos sin procesar, con un tamaño máximo de 2 GB.

  • Se utilizan principalmente en el diccionario de datos.
  • LONG almacena datos en formato de caracteres, mientras que LONG RAW almacena datos en formato binario.
  • LONG RAW acepta objetos multimedia e imágenes, mientras que LONG solo funciona con datos que se pueden almacenar utilizando un conjunto de caracteres.
Large_text LONG;
Large_raw LONG RAW;

Explicación de sintaxis:

  • La instrucción declara 'Large_text' de tipo de datos LONG y 'Large_raw' de tipo de datos LONG RAW.

Nota: No se recomienda el uso del tipo de datos LONG. OracleEn su lugar, se debería preferir el tipo de datos LOB.

NÚMERO PL/SQL Tipo de datos

Este tipo de dato almacena números de punto fijo o flotante con una precisión de hasta 38 dígitos. Se utiliza para trabajar con campos que contienen únicamente datos numéricos. La variable puede declararse con o sin precisión y detalles de dígitos decimales. Los valores no necesitan ir entre comillas al asignarlos.

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

Explicación de sintaxis:

  • La primera declaración declara la variable 'A' de tipo de datos numérico con una precisión total de 8 y 2 dígitos decimales.
  • La segunda declara 'B' de tipo de datos numéricos con precisión total 8 y sin dígitos decimales.
  • La tercera opción es la más genérica, declarando la variable 'C' como tipo de dato numérico sin restricciones de precisión ni decimales. Puede contener hasta 38 dígitos.

Tipo de datos booleano PL/SQL

Este tipo de datos almacena valores lógicos. Oracle El tipo de dato booleano representa VERDADERO o FALSO y se utiliza principalmente en sentencias condicionales. Los valores no necesitan ir entre comillas al asignarlos.

Var1 BOOLEAN;

Explicación de sintaxis:

  • La variable 'Var1' está declarada como tipo de dato BOOLEAN. El resultado será verdadero o falso según la condición establecida.

Tipo de datos de fecha PL/SQL

Este tipo de dato almacena valores en formato de fecha, como día, mes y año. Cuando se define una variable con el tipo de dato FECHA, puede contener información de tiempo; por defecto, la hora se establece en 12:00:00 si no se especifica. Los valores deben ir entre comillas al asignarlos.

El Oracle El formato de hora para la entrada y la salida es 'DD-MON-YY', que se establece en NLS_PARAMETERS (NLS_DATE_FORMAT) a nivel de sesión.

newyear DATE:= '01-JAN-2015';
current_date DATE:= SYSDATE;

Explicación de sintaxis:

  • La variable 'newyear' se declara como de tipo de datos FECHA y se le asigna el valor del 1 de enero de 2015.
  • La segunda declaración declara 'current_date' como tipo de datos DATE y le asigna la fecha actual del sistema.
  • Ambas variables contienen información temporal.

Tipo de datos LOB PL/SQL

Este tipo de datos se utiliza principalmente para almacenar y manipular grandes bloques de datos no estructurados, como imágenes y archivos multimedia. Oracle Prefiere LOB sobre el tipo de datos LONG porque es más flexible. Las principales ventajas de LOB sobre LONG son:

  • Una tabla está limitada a una columna LONG, mientras que no hay restricción en el número de columnas LOB.
  • Las herramientas de interfaz de datos aceptan columnas LOB durante la replicación, pero omiten las columnas LONG, que deben replicarse manualmente.
  • Una columna LONG almacena hasta 2 GB, mientras que una columna LOB puede almacenar hasta 128 TB.
  • Oracle Sigue mejorando el tipo de datos LOB con cada versión, mientras que LONG permanece prácticamente sin cambios.

Por lo tanto, siempre es recomendable usar el tipo de datos LOB en lugar de LONG. Los diferentes tipos de datos LOB que se muestran a continuación pueden almacenar hasta 128 terabytes:

  1. BLOB
  2. CLOB y NCLOB
  3. ARCHIVOB
Tipo de datos Mareas Ideales para Lecciones Sintaxis
BLOB Este tipo de datos almacena datos LOB en formato de archivo binario hasta un máximo de 128 TB. No almacena datos según los detalles del conjunto de caracteres, por lo que puede almacenar datos no estructurados, como objetos multimedia e imágenes.
Binary_data BLOB;

Explicación de sintaxis:

  • La variable 'Binary_data' está declarada como un BLOB.
CLOB y NCLOB CLOB almacena datos LOB en el conjunto de caracteres, mientras que NCLOB los almacena en el conjunto de caracteres nativo. Debido a que utilizan almacenamiento basado en conjuntos de caracteres, no pueden almacenar datos como multimedia o imágenes. El tamaño máximo es de 128 TB.
Charac_data CLOB;

Explicación de sintaxis:

  • La variable 'Charac_data' está declarada como tipo de datos CLOB.
ARCHIVOB
  • BFILE almacena datos binarios no estructurados fuera de la base de datos como un archivo del sistema operativo.
  • El tamaño de un archivo BFILE está limitado por el sistema operativo, y los archivos son de solo lectura y no se pueden modificar.

Preguntas Frecuentes

CHAR tiene una longitud fija y rellena con espacios en blanco hasta alcanzar el tamaño declarado, desperdiciando espacio en valores cortos. VARCHAR2 tiene una longitud variable y almacena solo los caracteres reales, por lo que se prefiere para la mayoría de las columnas de cadena.

LOB permite muchas columnas por tabla, almacena hasta 128 TB y mejora con cada versión. LONG está limitado a una columna, tiene un límite de 2 GB y se mantiene principalmente por compatibilidad con versiones anteriores.

No en versiones anteriores. BOOLEAN era un tipo exclusivo de PL/SQL, por lo que las columnas de la tabla usaban un indicador NUMBER o CHAR en su lugar. Se usa directamente dentro de bloques para lógica condicional.

Sí. Al analizar los valores de muestra en cuanto a longitud, rango y formato, la IA puede sugerir VARCHAR2, NUMBER, DATE o LOB, e identificar las columnas que sean demasiado grandes. Confirme la elección con datos futuros.

Sí. La función FECHA almacena el siglo, el año, el mes, el día, la hora, el minuto y el segundo. Si no se especifica la hora, se utiliza la medianoche por defecto. Para fracciones de segundo o zonas horarias, utilice la función MARCA DE TIEMPO.

Resumir este post con: