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 variable_type [NOT NULL] [:= initial_value];
  • 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:

  1. Numéricos: Incluyen NUMBER, BINARY_FLOAT, BINARY_DOUBLE.
  2. Carácter: Incluyen CHAR, VARCHAR2, NCHAR, NVARCHAR2.
  3. Fecha y Hora: Incluyen DATE, TIMESTAMP.
  4. 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:

  1. Registros: Agrupan diferentes tipos de datos en una sola estructura.
  2. 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:

  1. CLOB: Almacena grandes cadenas de caracteres.
  2. BLOB: Almacena grandes datos binarios.
  3. NCLOB: Almacena grandes cadenas de caracteres en Unicode.
  4. BFILE: Almacena referencias a archivos binarios en el sistema de archivos.

Ejemplo:

DECLARE
    large_text CLOB;
    binary_data BLOB;
BEGIN
    -- Código para manipular LOBs
END;

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:

DECLARE
    salary NUMBER(8,2) := 50000;
BEGIN
    DBMS_OUTPUT.PUT_LINE('Salary: ' || salary);
END;

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.

© Copyright 2024. Todos los derechos reservados