sql >> Base de Datos >  >> RDS >> Database

Tutorial de PL/SQL:todo lo que necesita saber sobre PL/SQL

PL/SQL es un lenguaje de procedimiento que supera las deficiencias que enfrenta el lenguaje de consulta estructurado. Es una extensión de SQL e incluso podemos usar consultas SQL sin problemas en cualquier aplicación o programa PL/SQL. En este tutorial de PL/SQL, veremos en detalle los conceptos básicos de PL/SQL. Los siguientes temas se tratan en este artículo.

  • ¿Qué es PL/SQL?
    • Características
    • PL/SQL frente a SQL
  • Estructuras de bloques en PL/SQL
  • Variables PL/SQL
  • Función en PL/SQL
  • Procedimiento PL/SQL
  • Bloque anidado
  • Declaración SI
  • Declaración CASE
  • Declaración de bucle
    • Instrucción de bucle while
    • Instrucción de bucle for
  • Manejo excepcional

¿Qué es PL/SQL?

Significa la extensión del lenguaje de procedimiento al lenguaje de consulta estructurado. Oracle creó PL/SQL que amplía algunas limitaciones de SQL para brindar una solución más integral para crear aplicaciones de misión crítica que se ejecutan en la base de datos de Oracle.

Características

  • PL/SQL proporciona la funcionalidad de un lenguaje de procedimiento como la toma de decisiones, la iteración, etc.

  • Usando un solo comando, PL/SQL puede ejecutar varias consultas.

  • También podemos reutilizar unidades PL/SQL como funciones, activadores, procedimientos, etc. que se almacenan en la base de datos después de la creación.

  • PL/SQL también tiene un bloque de manejo de excepciones que maneja las excepciones en PL/SQL.

  • También es posible realizar una verificación exhaustiva de errores usando PL/SQL

  • Las aplicaciones escritas en PL/SQL son portátiles a otro hardware y sistemas operativos siempre que Oracle esté operativo.

PL/SQL frente a SQL

SQL PL/SQL
SQL es una consulta única que se usa para realizar operaciones DDL y DML PL/SQL es un bloque de códigos que se usa para definir un programa completo o procedimiento/función, etc.
Realmente no define cómo se deben hacer las cosas, sino qué se debe hacer PL/SQL define cómo deben hacerse las cosas
Ejecuta una única sentencia Ejecuta un bloque de sentencias a la vez.
SQL se usa principalmente para manipular los datos PL/SQL, por otro lado, se usa para crear aplicaciones
No puede contener código PL/SQL Dado que es una extensión SQL, puede contener código SQL

Estructuras de bloques en PL/SQL

PL/SQL normalmente organiza el código en bloques. El bloque de código sin nombre se conoce como bloque anónimo. Se conoce como el bloque anónimo porque no se guarda en la base de datos de Oracle. Echemos un vistazo a un bloque anónimo en PL/SQL.

[DECLARAR] sentencias de declaración;[BEGIN] sentencias de ejecución; [EXCEPCIÓN] sentencias de excepción;FIN;/

Si observamos el diagrama que se muestra arriba, podemos ver que la estructura del bloque se divide en cuatro partes, es decir, declaración, inicio, excepción y fin. Tratemos de entender cómo funciona la estructura de bloques en PL/SQL. De todas estas secciones, la sección de ejecución es obligatoria y el resto son opcionales.

  • DECLARACIÓN la palabra clave se usa para la sección de declaración se usa para declarar tipos de datos y estructuras como variables, funciones, etc.

  • COMENZAR La palabra clave se utiliza para la sección de ejecución. Es obligatorio y contiene todas las declaraciones que deben ejecutarse. Este bloque es donde se define la lógica de negocios, podemos usar declaraciones de procedimiento o SQL en este bloque.

  • La EXCEPCIÓN La palabra clave se utiliza para la sección de excepción. Contiene todas las sentencias de excepción.

  • FIN La palabra clave marca el final del bloque y la barra invertida '/' le dice a la herramienta que está utilizando (herramienta de base de datos de Oracle) para ejecutar el bloque PL/SQL.

Aquí hay un ejemplo simple para mostrar cómo podemos usar el código PL/SQL.

COMENZAR NULO;FIN;/

Ahora que sabemos cómo funciona la estructura de bloques en PL/SQL, comprendamos los diversos aspectos de PL/SQL como declarar, nombrar y asignar valores a las variables.

Variables PL/SQL

La variable en PL/SQL es básicamente un nombre que varía o una ubicación de almacenamiento temporal que admite un tipo de datos en particular. Echemos un vistazo a cómo podemos usar las variables en un programa PL/SQL.

Reglas de nomenclatura de variables

PL/SQL sigue las siguientes reglas para nombrar variables.

  • La variable no puede tener más de 31 caracteres

  • El nombre de la variable debe comenzar con un carácter ASCII. Dado que PL/SQL distingue entre mayúsculas y minúsculas, una letra mayúscula y una letra minúscula serán variables diferentes.

  • Después del primer carácter, tiene que haber un carácter especial($,_) o cualquier número.

Convenciones de nomenclatura

Use las siguientes convenciones de nomenclatura que se enumeran a continuación para usar las variables.

Prefijo Tipo de datos
v_ VARCHAR2
n_ NÚMERO
t_ TABLA
r_ FILA
d_ FECHA
b_ BOOLEANO

Declaración

Tratemos de entender cómo se hace la declaración de variables en PL/SQL

La declaración incluye el nombre de la variable seguido del tipo de datos y separados por un punto y coma. El siguiente es un ejemplo para mostrar cómo puede declarar una variable en PL/SQL.

DECLARAR v_nombre VARCHAR(25); NÚMERO n_age(3);COMENZAR NULO;FIN;

También puede agregar la longitud del tipo de datos como lo hemos hecho en el ejemplo anterior.

Anclajes

El ancla básicamente se refiere al uso de la palabra clave %TYPE para declarar una variable con el tipo de datos asociado con el tipo de datos de una columna de una columna en particular en una tabla.

Echa un vistazo a un ejemplo para entender esto. Supongamos que tenemos una tabla EMPLEADOS, podemos usar los anclajes de la siguiente manera.

DECLARAR v_nombre EMPLEADO.NOMBRE%TIPO; n_age EMPLOYEE.AGE%TYPE;BEGIN NULL;END;/

Tarea

La asignación de variables es bastante fácil, podemos usar el operador de asignación para asignar valores a una variable. El siguiente ejemplo muestra cómo podemos asignar valores a una variable.

DECLARAR v_nombre VARCHAR(20); n_curso VARCHAR(10);COMENZAR v_nombre ="edureka"; v_curso ="sql";FIN;/

Inicialización

También podemos inicializar un valor para la variable en la sección de declaración. El siguiente ejemplo muestra cómo podemos inicializar valores a una variable.

DECLAREv_name VARCHAR(20) ="edureka";n_course VARCHAR(10) ="sql";BEGIN NULL;END;/

Ahora que sabemos cómo podemos trabajar con las variables, intentemos entender cómo usaremos las funciones en PL/SQL.

Función en PL/SQL

Una función en PL/SQL es básicamente un bloque con nombre que devuelve un valor. También se conoce como subrutina o subprograma, la siguiente sintaxis muestra cómo podemos usar funciones en PL/SQL.

CREATE [OR REPLACE] FUNCTION nombre_función [( parámetro_1 [IN] [OUT] tipo_datos, parámetro_2 [IN] [OUT] tipo_datos, parámetro_N [IN] [OUT] tipo_datos] RETURN return_tipo_datos IS BEGIN declaraciones return return_tipo_datos; EXCEPTION END; //pre> 

En primer lugar, debe especificar un nombre de función después de la palabra clave. El nombre de la función debe comenzar con un verbo. Una función puede tener ninguno, uno o más parámetros que especificamos en parámetros. Tenemos que especificar el tipo de datos de cada parámetro explícitamente, y luego viene el modo que puede ser cualquiera de los siguientes.

  • EN – El parámetro IN es un parámetro de solo lectura.

  • FUERA – Es un parámetro de solo escritura

  • DENTRO FUERA – El parámetro IN OUT es un parámetro de lectura y escritura.

Aquí hay un ejemplo simple para mostrar cómo usamos las funciones en PL/SQL.

CREAR O REEMPLAZAR FUNCIÓN try_parse( iv_number IN VARCHAR2) DEVOLVER NÚMERO ISBEGIN RETURN to_number(iv_number); EXCEPCIÓN CUANDO otros ENTONCES DEVUELVEN NULL;FIN;

Llamar a una función

Intentemos llamar a la función que hemos creado en un bloque anónimo en el siguiente ejemplo.

FIJAR SALIDA DEL SERVIDOR EN TAMAÑO 1000000; DECLARAR n_x número; n_y número; n_z numero;COMENZAR n_x :=try_parse('256'); n_y :=try_parse('29.72'); n_z :=try_parse('pqrs'); DBMS_SALIDA.PUT_LINE(n_x); DBMS_OUTPUT.PUT_LINE(n_y); DBMS_OUTPUT.PUT_LINE(n_z);END;/

También podemos llamar a la función en una instrucción SELECT. Ahora que sabemos cómo podemos usar funciones en PL/SQL, intentemos entender cómo trabajamos con procedimientos en PL/SQL.

Procedimiento PL/SQL

Un procedimiento es básicamente un bloque que realiza una tarea específica. Usando un procedimiento, podemos encapsular o encapsular lógica empresarial compleja y reutilizarla tanto en la capa de la aplicación como en la de la base de datos.

Echemos un vistazo a un ejemplo simple para entender cómo funciona el procedimiento en PL/SQL

CREAR O REEMPLAZAR PROCEDIMIENTO ajuste_salario( in_employee_id IN EMPLOYEES.EMPLOYEE_ID%TYPE, in_percent IN NUMBER) ISBEGIN -- actualizar el salario del empleado ACTUALIZAR empleados SET salario =salario + salario * in_percent / 100 WHERE employee_id =in_employee_id;END;

En el ejemplo anterior, tenemos dos parámetros, el procedimiento ajusta el salario en un porcentaje dado y la palabra clave ACTUALIZAR actualiza el valor en la información del salario.

Encabezado del procedimiento

La sección anterior a la palabra clave IS se denomina encabezado del procedimiento. Los siguientes son algunos consejos con los que uno debe estar familiarizado al trabajar con procedimientos.

  • esquema – Es el nombre opcional del esquema al que pertenece el procedimiento.

  • nombre – El nombre del procedimiento que debe comenzar con un verbo.

  • parámetros – Es la lista opcional de parámetros.

  • AUTOID – Determina si el procedimiento se ejecutará con el privilegio del usuario actual o el propietario original del procedimiento.

Órgano del procedimiento

Todo lo que viene después de la palabra clave IS se denomina cuerpo del procedimiento. Tenemos las sentencias de declaración, excepción y ejecución en el cuerpo del procedimiento. A diferencia de la función, la palabra clave RETURN en un procedimiento se usa para detener la ejecución y devolver el control a la persona que llama.

Llamar a un procedimiento

Veamos cómo podemos llamar a un procedimiento en PL/SQL.

 nombre_procedimiento EXEC(parámetro1,parámetro2…parámetroN);

Podemos llamar a los procedimientos sin parámetros con solo usar la palabra clave EXEC y el nombre del procedimiento. Ahora que sabemos cómo podemos trabajar con procedimientos, intentemos entender cómo se usan los bloques anidados en PL/SQL.

Bloque anidado

Un bloque anidado no es más que una combinación de uno o más bloques PL/SQL para obtener un mejor control sobre la ejecución y un manejo excepcional del programa.

Aquí hay un ejemplo simple de un bloque anidado.

FIJAR SALIDA DEL SERVIDOR EN TAMAÑO 1000000; DECLARAR n_emp_id EMPLOYEES.EMPLOYEE_ID%TYPE :=&emp_id1;COMENZAR DECLARAR n_emp_id empleados.employee_id%TYPE :=&emp_id2; v_nombre empleados.primer_nombre%TYPE; EMPIEZA SELECCIONA first_name EN v_name DESDE EMPLEADOS DONDE id_empleado =n_emp_id; DBMS_OUTPUT.PUT_LINE('Nombre del empleado ' || n_emp_id || ' es ' || v_name); EXCEPCIÓN CUANDO no_data_found ENTONCES DBMS_OUTPUT.PUT_LINE('Empleado' || n_emp_id || 'no encontrado'); FIN;FIN;/

El bloque PL/SQL externo en el ejemplo anterior se conoce como bloque principal o bloque envolvente, el bloque interno, por otro lado, se conoce como bloque secundario o bloque bloque cerrado.

No es una buena idea usar las variables con los mismos nombres en ambos bloques porque durante la ejecución, la variable del bloque secundario anulará la variable del bloque principal. Ocurre porque PL/SQL da prioridad a la variable dentro de su propio bloque.

Etiqueta de bloque

Podemos superar este problema con la etiqueta de bloque que nos ayuda a hacer referencias a variables dentro de bloques usando una etiqueta.

Aquí hay un ejemplo simple para mostrar cómo podemos usar una etiqueta de bloque.

<>DECLARAR... COMENZAR... FIN;

Usar una etiqueta de bloque ayuda a mejorar la legibilidad del código, obtener un mejor control y hacer referencias a los bloques. Ahora que sabemos cómo podemos trabajar con bloques anidados, intentemos entender cómo funciona la DECLARACIÓN IF en PL/SQL.

Declaración SI

PL/SQL tiene tres DECLARACIONES IF

  • SI-ENTONCES – Es la DECLARACIÓN IF más simple si la condición es verdadera, las declaraciones se ejecutarán, si la condición es falsa, no hace nada.

  • SI-ENTONCES-OTRO – En esto, se agrega la cláusula ELSE para una secuencia alternativa de declaraciones.

  • SI-ENTONCES-ELSEIF – Nos permite ejecutar múltiples condiciones de prueba en una secuencia.

Sintaxis SI-ENTONCES

IF condición THEN secuencia_de_instrucciones;END IF;

Sintaxis IF-THEN-ELSE

IF condición ENTONCES secuencia_de_si_declaraciones;ELSE secuencia_de_otro_declaraciones;FIN SI;

Sintaxis SI-ENTONCES-ELSEIF

IF condición1 THEN secuencia_de_instrucciones1ELSIF condición2 THEN secuencia_de_instrucciones2ELSE secuencia_de_instrucciones3END IF;

Ahora que hemos terminado con la DECLARACIÓN IF, veamos la declaración CASE en PL/SQL.

Declaración CASE

La declaración CASE básicamente ayuda a ejecutar una secuencia de declaraciones basadas en un selector. Un selector, en este caso, puede ser cualquier cosa, puede ser una variable, una función o una simple expresión. Aquí hay un ejemplo simple para mostrar la sintaxis de la instrucción CASE en PL/SQL.

[<>]CASE [VERDADERO | selector] CUANDO expresión1 ENTONCES secuencia_de_instrucciones1; CUANDO expresión2 ENTONCES secuencia_de_sentencias2; ... CUANDO expresiónN ENTONCES secuencia_de_sentenciasN; [ELSE secuencia_de_instruccionesN+1;]END CASE [nombre_etiqueta];

En la sintaxis anterior, después de la palabra clave CASE viene el selector. PL/SQL evaluará el selector solo una vez para determinar qué declaración debe ejecutarse.

Seguido del selector está la palabra clave CUANDO. Si la expresión satisface el selector, se ejecuta la declaración correspondiente después de la palabra clave THEN.

Ahora que sabemos cómo podemos usar una declaración CASE, intentemos entender cómo usaremos las declaraciones de bucle en PL/SQL.

Declaración de bucle

Una sentencia de bucle en PL/SQL es una sentencia iterativa que le permite ejecutar una secuencia de sentencias varias veces. Aquí hay un ejemplo simple para mostrar la sintaxis de una declaración de bucle en PL/SQL.

LOOP secuencia_de_instrucciones;FIN DE BUCLE;

Tiene que haber al menos una declaración ejecutable entre la palabra clave LOOP y END LOOP.

Bucle con instrucción EXIT

Las instrucciones EXIT y EXIT when le permiten salir del ciclo. La declaración EXIT WHEN finaliza el bucle condicionalmente mientras que EXIT finaliza la ejecución incondicionalmente.

LOOP... SALIR CUANDO condición;FIN DE BUCLE;

Etiqueta de bucle

Se usa una etiqueta de ciclo para calificar el nombre de la variable de contador de ciclo cuando se usa en un ciclo anidado. A continuación se muestra la sintaxis de una etiqueta de bucle.

<>LOOP secuencia_de_instrucciones;END LOOP etiqueta;

Ahora que sabemos cómo podemos usar las sentencias de bucle, echemos un vistazo a las sentencias de bucle while para una mejor comprensión.

Instrucción de bucle while

Podemos usar la declaración de bucle WHILE cuando el número de ejecuciones no está definido hasta que comienza la ejecución. La siguiente sintaxis se usa para una instrucción de bucle WHILE en PL/SQL.

WHILE conditionLOOP secuencia_de_instrucciones;END LOOP;

La condición en la sintaxis es un valor booleano o una expresión que se evalúa como VERDADERO, FALSO o NULO. Si la condición es VERDADERA, las sentencias se ejecutarán, si es FALSO, la ejecución se detiene y el control pasa a la siguiente sentencia ejecutable.

Ahora que sabemos cómo podemos usar una declaración de bucle WHILE, echemos un vistazo a la declaración de bucle FOR.

Instrucción de bucle For

Una declaración de bucle FOR en PL/SQL nos permite ejecutar una secuencia de declaraciones por un número definido de veces. La siguiente es la sintaxis para usar la declaración de bucle FOR en PL/SQL

FOR loop_counter IN [REVERSE] lower_bound .. upper_boundLOOP secuencia_de_instrucciones;END LOOP;

PL/SQL crea una variable local loop_counter automáticamente con un tipo de datos INTEGER para el ciclo para que no tenga que declararlo explícitamente. El límite inferior... el límite superior es el rango sobre el cual itera el bucle. Además, debe tener al menos una instrucción ejecutable entre las palabras clave LOOP y END LOOP.

Ahora que sabemos cómo podemos usar las declaraciones de bucle en PL/SQL, echemos un vistazo al manejo excepcional en PL/SQL.

Manejo excepcional

En PL/SQL, cualquier tipo de error se trata como una excepción. Una excepción se puede tratar como una condición especial que puede cambiar o alterar el flujo de ejecución. En PL/SQL, hay dos tipos de excepciones.

  • Excepción del sistema: Lo genera el tiempo de ejecución de PL/SQL cuando detecta un error.

  • Excepción definida por el programador: Estas excepciones las define el programador en una aplicación específica.

Definición de una excepción

Se debe declarar una excepción en PL/SQL antes de que se pueda generar. Podemos definir la excepción usando la palabra clave EXCEPTION como lo hemos hecho en el ejemplo a continuación.

EXCEPCIÓN DE EXCEPCIÓN_NOMBRE;

Para generar una excepción, usamos la palabra clave RAISE.

LEVANTAR EXCEPTION_NAME;

Así que eso fue todo sobre PL/SQL, espero que este artículo le haya ayudado a agregar valor a su conocimiento. Para obtener más información sobre SQL o bases de datos, puede consultar nuestra lista de lectura completa aquí:Bases de datos Edureka .

Si desea obtener una capacitación estructurada en MySQL, consulte nuestra Capacitación para la certificación de MySQL DBA que viene con capacitación en vivo dirigida por un instructor y experiencia en proyectos de la vida real. Esta capacitación lo ayudará a comprender MySQL en profundidad y lo ayudará a dominar el tema.

¿Tiene alguna pregunta para nosotros? Menciónelo en la sección de comentarios de ”Tutorial de PL/SQL ” y me pondré en contacto con usted.