En este módulo, aprenderemos sobre las variables y los tipos de datos en PL/SQL. Las variables son fundamentales en cualquier lenguaje de programación, ya que nos permiten almacenar y manipular datos. PL/SQL ofrece una variedad de tipos de datos que podemos utilizar según nuestras necesidades.
Contenido
Declaración de Variables
Para declarar una variable en PL/SQL, utilizamos la siguiente sintaxis:
variable_name
: El nombre de la variable.variable_type
: El tipo de dato de la variable.NOT NULL
: (Opcional) Indica que la variable no puede contener valores nulos.initial_value
: (Opcional) Un valor inicial para la variable.
Ejemplo:
DECLARE employee_id NUMBER(6); employee_name VARCHAR2(50) := 'John Doe'; hire_date DATE NOT NULL := SYSDATE; BEGIN -- Código PL/SQL END;
Tipos de Datos Escalares
Los tipos de datos escalares son los tipos de datos más básicos y se dividen en cuatro categorías principales:
- Numéricos: Incluyen
NUMBER
,BINARY_FLOAT
,BINARY_DOUBLE
. - Carácter: Incluyen
CHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
. - Fecha y Hora: Incluyen
DATE
,TIMESTAMP
. - Booleanos: Incluyen
BOOLEAN
.
Tabla de Tipos de Datos Escalares
Tipo de Dato | Descripción | Ejemplo de Declaración |
---|---|---|
NUMBER |
Números enteros y decimales | salary NUMBER(8,2); |
BINARY_FLOAT |
Números de punto flotante de precisión simple | weight BINARY_FLOAT; |
BINARY_DOUBLE |
Números de punto flotante de doble precisión | height BINARY_DOUBLE; |
CHAR |
Cadena de caracteres de longitud fija | gender CHAR(1); |
VARCHAR2 |
Cadena de caracteres de longitud variable | name VARCHAR2(50); |
DATE |
Fecha y hora | birthdate DATE; |
TIMESTAMP |
Fecha y hora con fracciones de segundo | event_time TIMESTAMP; |
BOOLEAN |
Valores lógicos (TRUE, FALSE, NULL) | is_active BOOLEAN; |
Tipos de Datos Compuestos
Los tipos de datos compuestos permiten agrupar varios elementos en una sola unidad. Los principales tipos de datos compuestos en PL/SQL son:
- Registros: Agrupan diferentes tipos de datos en una sola estructura.
- Colecciones: Incluyen tablas anidadas, VARRAYs y asociaciones de índices.
Ejemplo de Registro:
DECLARE TYPE EmployeeRec IS RECORD ( employee_id NUMBER(6), employee_name VARCHAR2(50), hire_date DATE ); employee EmployeeRec; BEGIN employee.employee_id := 101; employee.employee_name := 'John Doe'; employee.hire_date := SYSDATE; END;
Ejemplo de Colección:
DECLARE TYPE NumList IS TABLE OF NUMBER; numbers NumList := NumList(1, 2, 3, 4, 5); BEGIN FOR i IN 1..numbers.COUNT LOOP DBMS_OUTPUT.PUT_LINE(numbers(i)); END LOOP; END;
Tipos de Datos Referenciados
Los tipos de datos referenciados permiten crear variables que apuntan a objetos definidos en la base de datos.
Ejemplo:
DECLARE emp_ref REF employees%ROWTYPE; BEGIN SELECT REF(e) INTO emp_ref FROM employees e WHERE employee_id = 101; END;
Tipos de Datos LOB
Los tipos de datos LOB (Large Object) se utilizan para almacenar grandes cantidades de datos, como texto, imágenes, videos, etc. Los principales tipos de datos LOB son:
- CLOB: Almacena grandes cadenas de caracteres.
- BLOB: Almacena grandes datos binarios.
- NCLOB: Almacena grandes cadenas de caracteres en Unicode.
- BFILE: Almacena referencias a archivos binarios en el sistema de archivos.
Ejemplo:
Ejemplos Prácticos
Ejemplo 1: Declaración y Uso de Variables
DECLARE employee_id NUMBER(6) := 101; employee_name VARCHAR2(50) := 'John Doe'; hire_date DATE := SYSDATE; BEGIN DBMS_OUTPUT.PUT_LINE('Employee ID: ' || employee_id); DBMS_OUTPUT.PUT_LINE('Employee Name: ' || employee_name); DBMS_OUTPUT.PUT_LINE('Hire Date: ' || hire_date); END;
Ejemplo 2: Uso de Tipos de Datos Compuestos
DECLARE TYPE EmployeeRec IS RECORD ( employee_id NUMBER(6), employee_name VARCHAR2(50), hire_date DATE ); employee EmployeeRec; BEGIN employee.employee_id := 101; employee.employee_name := 'John Doe'; employee.hire_date := SYSDATE; DBMS_OUTPUT.PUT_LINE('Employee ID: ' || employee.employee_id); DBMS_OUTPUT.PUT_LINE('Employee Name: ' || employee.employee_name); DBMS_OUTPUT.PUT_LINE('Hire Date: ' || employee.hire_date); END;
Ejercicios
Ejercicio 1: Declaración de Variables
Instrucciones: Declara una variable para almacenar el salario de un empleado y asígnale un valor inicial de 50000. Luego, imprime el valor de la variable.
DECLARE -- Declara la variable salary aquí BEGIN -- Imprime el valor de la variable salary aquí END;
Solución:
Ejercicio 2: Uso de Tipos de Datos Compuestos
Instrucciones: Declara un registro para almacenar la información de un empleado (ID, nombre y fecha de contratación). Asigna valores a los campos del registro e imprime los valores.
DECLARE -- Declara el tipo de registro y la variable aquí BEGIN -- Asigna valores a los campos del registro aquí -- Imprime los valores de los campos del registro aquí END;
Solución:
DECLARE TYPE EmployeeRec IS RECORD ( employee_id NUMBER(6), employee_name VARCHAR2(50), hire_date DATE ); employee EmployeeRec; BEGIN employee.employee_id := 101; employee.employee_name := 'John Doe'; employee.hire_date := SYSDATE; DBMS_OUTPUT.PUT_LINE('Employee ID: ' || employee.employee_id); DBMS_OUTPUT.PUT_LINE('Employee Name: ' || employee.employee_name); DBMS_OUTPUT.PUT_LINE('Hire Date: ' || employee.hire_date); END;
Conclusión
En esta sección, hemos aprendido sobre la declaración de variables y los diferentes tipos de datos disponibles en PL/SQL. Hemos visto ejemplos prácticos y hemos realizado ejercicios para reforzar los conceptos. En el próximo módulo, exploraremos las estructuras de control en PL/SQL, que nos permitirán controlar el flujo de ejecución de nuestros programas.
Curso de PL/SQL
Módulo 1: Introducción a PL/SQL
Módulo 2: Fundamentos de PL/SQL
- Estructura del Bloque PL/SQL
- Variables y Tipos de Datos
- Estructuras de Control
- Cursores
- Manejo de Excepciones