Tema 24. PL/SQL en Oracle
30 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál es la principal diferencia entre una función y un procedimiento almacenado en PL/SQL?

  • Una función se utiliza para automatizar tareas, mientras que un procedimiento se utiliza para ejecutar consultas
  • Un procedimiento almacenado se utiliza para borrar datos, mientras que una función se utiliza para insertar
  • Un procedimiento almacenado devuelve un valor, mientras que una función no
  • Una función se puede llamar como parte de una expresión, mientras que un procedimiento no (correct)
  • ¿Qué es la principal ventaja de utilizar bloques en PL/SQL?

  • Supone una mejora en el rendimiento (correct)
  • Mejora la legibilidad del código
  • Permite la ejecución de consultas concurrentes
  • Facilita la depuración de errores
  • ¿Qué es el propósito de utilizar triggers en PL/SQL?

  • Automatizar tareas de mantenimiento
  • Realizar consultas concurrentes
  • Garantizar que una determinada acción siempre se realiza después de realizar una tarea determinada (correct)
  • Garantizar la integridad de los datos
  • ¿Cómo se elimina un procedimiento almacenado de la base de datos?

    <p>Utilizando la sentencia 'DROP'</p> Signup and view all the answers

    ¿Qué es un paquete en PL/SQL?

    <p>Una estructura que agrupa procedimientos y funciones</p> Signup and view all the answers

    ¿Cuál es el propósito de las palabras reservadas en la estructura de un bloque PL/SQL?

    <p>Delimitar cada una de las partes del bloque PL/SQL</p> Signup and view all the answers

    ¿Qué caracteriza a un bloque anónimo en PL/SQL?

    <p>No tiene asignado un nombre</p> Signup and view all the answers

    ¿Qué variable debe estar activa para ver la salida al ejecutar un programa PL/SQL?

    <p>SERVEROUTPUT</p> Signup and view all the answers

    ¿Qué sentencia se utiliza para mostrar el contenido de una expresión en PL/SQL?

    <p>DBMS_OUTPUT</p> Signup and view all the answers

    ¿Cuál es la estructura típica de un bloque PL/SQL?

    <p>Parte de declaración, parte de ejecución, parte de excepción</p> Signup and view all the answers

    ¿Qué pasa cuando se lanza una excepción en un bloque PL/SQL?

    <p>El control se transfiere al bloque EXCEPTION del bloque actual y se busca un manejador válido.</p> Signup and view all the answers

    ¿Qué tipo de subprograma se utiliza para ejecutar una acción específica y devuelve un valor?

    <p>Función</p> Signup and view all the answers

    ¿Qué modificador se utiliza en un trigger para establecer una restricción y que solo actúe sobre las filas que satisfagan la restricción?

    <p>WHEN</p> Signup and view all the answers

    ¿Qué permiso es necesario para sobreescribir un procedimiento existente?

    <p>OR REPLACE</p> Signup and view all the answers

    ¿Qué tipo de parámetro no se permite en una función en PL/SQL?

    <p>OUT</p> Signup and view all the answers

    What is the purpose of a package specification in PL/SQL?

    <p>To define the interface to the package</p> Signup and view all the answers

    What is the benefit of using a package in PL/SQL?

    <p>Code reusability and better organization</p> Signup and view all the answers

    What is the purpose of the package body in PL/SQL?

    <p>To define the package elements</p> Signup and view all the answers

    What is the benefit of using a nested table in PL/SQL?

    <p>Ability to store and manipulate complex data structures</p> Signup and view all the answers

    What happens when a package is executed in PL/SQL?

    <p>The package body is executed</p> Signup and view all the answers

    What is the main difference between a function and a procedure in PL/SQL?

    <p>A function returns a value, while a procedure does not.</p> Signup and view all the answers

    What happens when a program calls a function in PL/SQL?

    <p>The program control is transferred to the called function.</p> Signup and view all the answers

    What is required to call a function in PL/SQL?

    <p>The function name and the required parameters</p> Signup and view all the answers

    What is the purpose of the CREATE FUNCTION statement in PL/SQL?

    <p>To create a standalone function</p> Signup and view all the answers

    What is the result of executing the code that calls the totalCustomers function?

    <p>It returns the total number of customers in the customers table</p> Signup and view all the answers

    Which of the following is NOT a part of a package in PL/SQL?

    <p>Trigger</p> Signup and view all the answers

    What is the purpose of the AUTHID clause in a package specification?

    <p>To determine the privileges of the subprograms and cursors in the package</p> Signup and view all the answers

    What is the purpose of the ACCESSIBLE BY clause in a package specification?

    <p>To specify a white list of PL/SQL units that can access the package</p> Signup and view all the answers

    What can be changed in a package without changing the specification or the references to the public items?

    <p>The package body</p> Signup and view all the answers

    What is the purpose of a call specification in a package?

    <p>To map a package subprogram to an external Java or C subprogram</p> Signup and view all the answers

    Study Notes

    Introducción a PL/SQL

    • PL/SQL es un lenguaje de programación incrustado en Oracle que soporta todas las consultas y manipulación de datos igual que en SQL.
    • PL/SQL se utiliza para construir bloques que se pueden utilizar como procedimientos o funciones, o como parte de scripts SQL*Plus.

    Elementos de PL/SQL

    Tipos de datos

    • Oracle/PLSQL tiene varios tipos de datos, que difieren entre versiones 8i y 9i.

    Identificadores

    • Un identificador es un nombre que se le pone a un objeto en un programa, que puede ser variable, constante, procedimiento, excepción, cursor, etc.
    • Un identificador debe tener un máximo de 30 caracteres, empezar por una letra y puede contener letras, números, símbolos $, #, _, y mayúsculas y minúsculas indiferentemente.
    • Los identificadores no pueden ser palabras reservadas (SELECT, INSERT, DELETE, UPDATE, DROP).

    Operadores

    • No se mencionan operadores específicos en el texto.

    Variables

    • Las variables son nombres para procesar elementos de datos.
    • Se declaran con "nombre_variable tipo_dato;".
    • Ejemplos: "nombrepleado VARCHAR2(20);", "edad NUMBER(3);".
    • Se puede definir una variable a partir de un campo mediante los atributos %TYPE y %ROWTYPE.

    Constantes

    • Las constantes son como variables, pero no se puede modificar su valor.
    • Se declaran con "nombre_constante CONSTANT tipo_dato;".
    • Ejemplo: "IVA CONSTANT NUMBER(4) := 0.16;".

    Bloque PL/SQL

    • Un bloque es la unidad de estructura básica en los programas PL/SQL.
    • Mejora el rendimiento, enviando los bloques completos al servidor para ser procesados.
    • Partes de un bloque: declaración, ejecución, excepciones y Finalmente.
    • Forma de crear un bloque: "DECLARE ... BEGIN ... EXCEPTION ... END;"

    Tipos de bloques

    Anónimo (sin nombre)

    • No se mencionan características específicas de los bloques anónimos.

    Subprogramas (tienen nombre)

    • Son bloques que tienen un nombre y se pueden reutilizar.

    Procedimientos

    • La sintaxis es: "CREATE PROCEDURE nombre_procedimiento (parámetros) AS ... BEGIN ... END;".
    • Ejemplo: "CREATE PROCEDURE crear_usuario (nombre IN VARCHAR2, contraseña IN VARCHAR2) AS ... BEGIN ... END;".
    • Para borrar un procedimiento almacenado de la base de datos: "DROP PROCEDURE nombre_procedimiento;".
    • Para utilizar un procedimiento almacenado de la base de datos: "nombre_procedimiento(arg1, arg2, ...);".

    Funciones

    • La sintaxis es: "CREATE FUNCTION nombre_función (parámetros) RETURN tipo_dato AS ... BEGIN ... END;".
    • Ejemplo: "CREATE FUNCTION calcular_sueldo (salario IN NUMBER, IVA IN NUMBER) RETURN NUMBER AS ... BEGIN ... END;".
    • Para borrar una función de la base de datos: "DROP FUNCTION nombre_función;".
    • Las funciones se pueden llamar como parte de una expresión.

    Paquetes

    • Se utilizan para agrupar procedimientos y funciones.
    • Facilitan la descomposición modular y el mantenimiento.
    • Constan de dos partes: la especificación o prototipo y el cuerpo.

    TRIGGER

    • Un trigger o disparador se ejecuta ante un determinado evento de manera automática.
    • Generalmente se utilizan para garantizar que una determinada acción siempre se realiza después de realizar una tarea determinada.
    • La sintaxis es: "CREATE TRIGGER nombre_trigger BEFORE|AFTER evento ON tabla REFERENCING nuevo | viejo AS ... BEGIN ... END;".
    • A nivel de sentencia: "CREATE TRIGGER nombre_trigger BEFORE|AFTER evento ON tabla AS ... BEGIN ... END;".
    • A nivel de registro: "CREATE TRIGGER nombre_trigger BEFORE|AFTER evento ON tabla FOR EACH ROW AS ... BEGIN ... END;".
    • Para eliminar un trigger: "DROP TRIGGER nombre_trigger;".

    Estructura de los bloques PL/SQL

    • Los bloques PL/SQL se componen de tres partes bien diferenciadas que se delimitan por palabras reservadas.
    • Las tres partes son: declaración, inicio y excepciones.

    Tipos de bloques PL/SQL

    • Los bloques PL/SQL pueden ser anónimos, lo que significa que no tienen asignado un nombre.

    Mostrar resultados

    • Para que la salida sea visible al ejecutar el programa, es necesario activar la variable correspondiente.
    • La sentencia para mostrar el contenido de una expresión es: DBG.

    Introducción a PL/SQL

    • PL/SQL es un lenguaje de programación que se utiliza para crear aplicaciones que trabajan con bases de datos relacionales.
    • No es un lenguaje de consulta, pero se utiliza para trabajar con bases de datos.
    • PL/SQL proporciona la capacidad de programar unidades de programa en una base de datos Oracle.

    Conceptos básicos de PL/SQL

    • PL/SQL no es CASE-SENSITIVE, es decir, no diferencia mayúsculas de minúsculas.
    • Una línea en PL/SQL contiene grupos de caracteres, conocidos como UNIDADES LÉXICAS, que pueden ser clasificadas como DELIMITADORES, IDENTIFICADORES, LITERALES, COMENTARIOS o EXPRESIONES.

    Tipos de datos en PL/SQL

    • Cada constante y variable tiene un tipo de dato en el que se especifica el formato de almacenamiento, restricciones y rango de valores válidos.
    • PL/SQL proporciona una variedad predefinida de tipos de datos, incluyendo enteros, caracteres, fechas, etc.

    Tablas de PL/SQL

    • Las tablas de PL/SQL son tipos de datos que nos permiten almacenar varios valores del mismo tipo de dato.
    • Una tabla PL/SQL, similar a un array, tiene dos componentes: una lista de elementos y un índice.

    Estructuras de control de flujo

    • En PL/SQL solo disponemos de la estructura condicional IF.
    • La sentencia GOTO desvía el flujo de ejecución a una determinada etiqueta.
    • PL/SQL dispone de los siguientes iteradores o bucles: LOOP, WHILE, FOR.

    Bloques PL/SQL

    • Un programa de PL/SQL está compuesto por bloques, que pueden ser de tres tipos: anónimos, procedimientos y funciones.
    • Los bloques PL/SQL presentan una estructura específica compuesta de tres partes: declaración, ejecución y excepciones.

    Cursores en PL/SQL

    • Un cursor es un conjunto de registros devuelto por una instrucción SQL.
    • Los cursores se definen como cualquier otra variable de PL/SQL y deben nombrarse de acuerdo a los mismos convenios que cualquier otra variable.

    Manejo de excepciones

    • En PL/SQL, una advertencia o condición de error se llama excepción.
    • Las excepciones se controlan dentro de su propio bloque, cuya estructura se muestra a continuación:
      • Declaración de variables y cursores
      • Bloque de ejecución
      • Bloque de excepciones

    Excepciones predefinidas

    • PL/SQL proporciona un gran número de excepciones predefinidas que permiten controlar las condiciones de error más habituales.
    • Algunas de las excepciones predefinidas son NO_DATA_FOUND, TOO_MANY_ROWS, ZERO_DIVIDE, etc.

    Excepciones definidas por el usuario

    • PL/SQL permite al usuario definir sus propias excepciones, que deberán ser declaradas y lanzadas explícitamente utilizando la sentencia RAISE.
    • Las excepciones deben ser declaradas en el segmento DECLARE de un bloque, subprograma o paquete.

    Reglas de alcance

    • Una excepción es válida dentro de su ámbito de alcance, es decir, el bloque o programa donde ha sido declarada.
    • Las excepciones predefinidas son siempre válidas.

    Subprogramas en PL/SQL

    • Los subprogramas son bloques de PL/SQL a los que asignamos un nombre identificativo y que normalmente almacenamos en la propia base de datos para su posterior ejecución.
    • Los subprogramas pueden recibir parámetros y pueden ser de varios tipos: procedimientos, funciones y disparadores.

    Triggers

    • Un trigger es un bloque PL/SQL asociado a una tabla, que se ejecuta como consecuencia de una determinada instrucción SQL (una operación DML: INSERT, UPDATE o DELETE) sobre dicha tabla.
    • Los triggers pueden definirse para las operaciones INSERT, UPDATE o DELETE, y pueden ejecutarse antes o después de la operación.

    Paquetes en PL/SQL

    • Un paquete es un objeto de esquema que agrupa tipos, variables y subprogramas relacionados lógicamente.
    • Un paquete tiene dos partes obligatorias: especificación del paquete y cuerpo del paquete.

    Especificación del Paquete

    • La especificación del paquete es la interfaz del paquete y declara tipos, variables, constantes, excepciones, cursores y subprogramas que se pueden hacer referencia desde fuera del paquete.
    • La especificación del paquete contiene toda la información sobre el contenido del paquete, pero excluye el código para los subprogramas.
    • Los objetos colocados en la especificación se llaman objetos públicos.
    • Un subprograma que no está en la especificación del paquete pero se codifica en el cuerpo del paquete se llama objeto privado.

    Cuerpo del Paquete

    • El cuerpo del paquete tiene el código para los métodos declarados en la especificación del paquete y otras declaraciones privadas que se ocultan del código fuera del paquete.
    • La instrucción CREATE PACKAGE BODY se utiliza para crear el cuerpo del paquete.

    Uso de los Elementos del Paquete

    • Los elementos del paquete (Variables, procedimientos o funciones) se acceden con la siguiente sintaxis: nombre_paquete.elemento_paquete
    • Para utilizar un método de un paquete, se debe utilizar la sintaxis anterior.

    Ejemplos de Paquetes

    • El siguiente programa utiliza el método find_sal del paquete cust_sal.
    • El siguiente programa proporciona un paquete más completo que utiliza la tabla CUSTOMERS.
    • El cuerpo del paquete utiliza una tabla anidada, que se discutirá en el próximo capítulo.

    Funciones en PL/SQL

    • Una función es similar a un procedimiento, excepto que devuelve un valor.
    • Todas las discusiones sobre procedimientos en el capítulo anterior también se aplican a funciones.

    Creación de una función

    • Se utiliza la instrucción CREATE FUNCTION para crear una función autónoma.
    • La sintaxis simplificada para la instrucción CREATE OR REPLACE PROCEDURE es la siguiente:
    • Ejemplo de creación de una función que devuelve el número total de clientes en la tabla CUSTOMERS.

    Llamada a una función

    • Al crear una función, se define lo que debe hacer.
    • Para utilizar una función, se debe llamar a la función para realizar la tarea definida.
    • Cuando un programa llama a una función, el control del programa se transfiere a la función llamada.
    • La función llamada realiza la tarea definida y devuelve el control del programa al programa principal cuando se ejecuta la instrucción RETURN o se alcanza la instrucción END.
    • Para llamar a una función, se deben pasar los parámetros requeridos junto con el nombre de la función y, si la función devuelve un valor, se puede almacenar el valor devuelto.

    Ejemplos de funciones

    • Ejemplo de función que devuelve el número total de clientes en la tabla CUSTOMERS.
    • Ejemplo de función que computa y devuelve el máximo de dos valores.
    • Ejemplo de función recursiva que calcula el factorial de un número.

    Funciones recursivas en PL/SQL

    • Una función recursiva es aquella que se llama a sí misma.
    • El proceso de una función que se llama a sí misma se conoce como recursión.
    • Ejemplo de función que calcula el factorial de un número mediante llamadas recursivas.
    • La función utiliza la instrucción RETURN para devolver el resultado de la función.

    Concepto de Paquete

    • Un paquete es un objeto de esquema que agrupa tipos, variables, constantes, subprogramas, cursores y excepciones relacionados lógicamente.
    • Un paquete se compila y almacena en la base de datos, donde varias aplicaciones pueden compartir su contenido.

    Estructura de un Paquete

    • Un paquete siempre tiene una especificación que declara los elementos públicos que se pueden referenciar desde fuera del paquete.
    • Si los elementos públicos incluyen cursores o subprogramas, entonces el paquete también debe tener un cuerpo.
    • El cuerpo define consultas para cursores públicos y código para subprogramas públicos.
    • El cuerpo también puede declarar y definir elementos privados que no se pueden referenciar desde fuera del paquete, pero son necesarios para el funcionamiento interno del paquete.

    Características de un Paquete

    • El cuerpo de un paquete puede tener una parte de inicialización que ejecuta instrucciones para inicializar variables y realizar pasos de configuración únicos.
    • El cuerpo de un paquete también puede tener una parte de manejo de excepciones.
    • Puedes cambiar el cuerpo de un paquete sin cambiar la especificación o las referencias a los elementos públicos.

    Integración con Lenguajes Externos

    • Puedes mapear un subprograma de paquete a un subprograma externo de Java o C mediante una especificación de llamada, que asigna el nombre del subprograma externo, tipos de parámetros y tipo de retorno a sus contrapartes SQL.

    Control de Acceso

    • La cláusula AUTHID de la especificación del paquete determina si los subprogramas y cursores en el paquete se ejecutan con los privilegios de su definidor (predeterminado) o invocador, y si sus referencias no calificadas a objetos de esquema se resuelven en el esquema del definidor o invocador.
    • La cláusula ACCESSIBLE BY de la especificación del paquete te permite especificar una lista blanca de unidades de PL/SQL que pueden acceder al paquete.
    • Se utiliza esta cláusula en situaciones como la de restringir el acceso a un paquete a solo ciertas unidades de PL/SQL.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Description

    Aprende a utilizar PL/SQL, un lenguaje de programación incrustado en Oracle, para manipular datos y construir bloques como procedimientos o funciones.

    More Like This

    PL/SQL Composite Data Types Quiz
    10 questions
    PL/SQL Programming Language
    5 questions

    PL/SQL Programming Language

    RetractableSine8681 avatar
    RetractableSine8681
    مقدمة في PL/SQL
    10 questions

    مقدمة في PL/SQL

    AmbitiousArtDeco9834 avatar
    AmbitiousArtDeco9834
    Use Quizgecko on...
    Browser
    Browser