Fundamentos de Programación Procedimental con PL/SQL en Oracle

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,02 KB

Conceptos Fundamentales de PL/SQL

Definición

PL/SQL es un lenguaje procedimental diseñado por Oracle para trabajar con la base de datos. Soporta todos los comandos de consulta y manipulación de datos, aportando al lenguaje SQL las estructuras de control propias de los lenguajes procedimentales.

Propósito

Permite construir programas que incluyen bloques anónimos, procedimientos, funciones y paquetes.

Estructura del Bloque PL/SQL

Un programa PL/SQL se estructura utilizando bloques. La unidad mínima de trabajo es el bloque, y cada bloque puede incluir tres secciones:

  1. DECLARE (Sección Declarativa)
  2. BEGIN (Sección Ejecutable)
  3. EXCEPTION (Manejo de Errores)

1. DECLARE: Sección Declarativa

En esta sección se declaran todas las constantes, variables, cursores y excepciones de usuario.

Tipos de Datos Comunes

  • Tipos de datos más comunes: NUMBER, CHAR, VARCHAR, DATE, BOOLEAN, REAL, FLOAT, INTEGER.

Sentencias Declarativas

  • Variable: <nombre_variable> <tipo> [ NOT NULL ] [ { := | DEFAULT } <valor> ]
  • Constante: <nombre_constante> CONSTANT <tipo> := <valor>
  • Asignación: variable := <valor>

Declaración Implícita (Atributos de Referencia)

Estos atributos permiten declarar variables basadas en la estructura de otras variables o campos de tabla, asegurando la compatibilidad de tipos.

  • Atributo %TYPE: <var1> <var2%TYPE> o <var> <tabla.campo%TYPE>
  • Atributo %ROWTYPE: Permite declarar una variable que representa una fila completa de una tabla o un cursor.
    • var tabla%ROWTYPE
    • var cursor%ROWTYPE

2. BEGIN: Sección Ejecutable

Contiene las sentencias ejecutables del bloque, incluyendo lógica de control y manipulación de datos.

Control de Decisión

IF

IF <condición> THEN
  <instrucciones>
  [ { ELSIF <condición> THEN
    <instrucciones> } ]
  [ ELSE <instrucciones> ]
END IF;

Control de Flujo (Bucles)

WHILE

WHILE <condición> LOOP
  <instrucciones>
END LOOP;

FOR

FOR <variable> IN [ REVERSE ] <valorinicial>.....<valorfinal> LOOP
  <instrucciones>
END LOOP;

Asignación de Valores mediante Consulta

La cláusula SELECT ... INTO se utiliza para asignar el valor devuelto por una consulta a una o varias variables.

  • Sintaxis: SELECT <columnas> INTO <variables> FROM <tablas> [ WHERE . . . ]
  • Restricción: El resultado de la expresión SELECT ... INTO debe ser una sola fila.
  • Manejo de Errores Implícitos:
    • Si el resultado es más de una fila, se carga la excepción TOO_MANY_ROWS.
    • Si el resultado no devuelve valor, se carga la excepción NO_DATA_FOUND.

Interacción con el Usuario (Salida Estándar)

El procedimiento DBMS_OUTPUT.PUT_LINE() dirige la salida a la salida estándar del entorno de ejecución.

3. EXCEPTION: Manejo de Excepciones

Contiene los manejadores de excepciones o rutinas encargadas de controlar errores durante la ejecución del bloque.

Definición de Excepción

Una excepción es una condición de error específica. Un programa PL/SQL produce una excepción específica cuando detecta un error, pasando el control al manejador de excepciones del programa principal.

  • Oracle identifica cerca de 20 excepciones predefinidas, incluyendo NO_DATA_FOUND y TOO_MANY_ROWS.
  • El usuario también puede definir y manejar sus propias excepciones.

Cursores

Un cursor es un área de trabajo en memoria para una sentencia SQL. Permite definir un puntero al resultado de una expresión SELECT que devuelve varias filas.

Operación del Cursor

  1. Se declara un objeto tipo cursor con una expresión SELECT.
  2. Se abre el cursor con OPEN cursor.
  3. Se extrae la fila del cursor con la instrucción FETCH.
  4. Para el control y manejo del cursor, el objeto de tipo cursor maneja atributos implícitos: %FOUND, %NOTFOUND, %ISOPEN, %ROWCOUNT.
  5. El cursor se cierra con CLOSE cursor.

Entradas relacionadas: