Cursores y Procedimientos Almacenados

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

¿Cuál de las siguientes opciones describe mejor la función principal de un cursor en bases de datos?

  • Gestionar la seguridad de la base de datos.
  • Almacenar y recorrer los resultados de una consulta, permitiendo el acceso fila por fila. (correct)
  • Optimizar la velocidad de las consultas complejas.
  • Establecer conexiones entre diferentes bases de datos.

¿En qué situaciones es más apropiado utilizar cursores en lugar de otros métodos de acceso a datos?

  • Cuando se requiere un control preciso sobre el procesamiento de cada fila resultante de una consulta. (correct)
  • Cuando el rendimiento de la consulta es lo más importante.
  • Cuando se necesita acceder a grandes cantidades de datos de manera rápida y eficiente.
  • Cuando se trabaja con bases de datos no relacionales.

¿Cuál es la función de la cláusula SCROLL al declarar un cursor?

  • Cierra automáticamente el cursor después de recuperar todos los datos.
  • Define el orden en que se deben recuperar las filas del cursor.
  • Permite que el cursor se recorra en ambas direcciones (adelante y atrás) y a saltos. (correct)
  • Especifica el número máximo de filas que el cursor puede contener.

¿Qué ocurre si se intenta utilizar una cláusula distinta a NEXT (por ejemplo, PRIOR, FIRST, LAST) en un cursor que no ha sido creado con la opción SCROLL?

<p>Se genera un error y la operación no se ejecuta. (D)</p> Signup and view all the answers

¿Cuál es el propósito de las cláusulas UPDATE y DELETE cuando se utilizan en conjunto con un cursor?

<p>Actualizar o eliminar la fila actual a la que apunta el cursor. (A)</p> Signup and view all the answers

¿Qué palabra clave se utiliza para declarar un procedimiento almacenado en SQL?

<p><code>PROCEDURE</code> (B)</p> Signup and view all the answers

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

<p>Las funciones deben devolver un valor, mientras que los procedimientos no están obligados a hacerlo. (B)</p> Signup and view all the answers

¿Qué tipos de parámetros se pueden utilizar en un procedimiento almacenado y cómo afectan el comportamiento del procedimiento?

<p>Parámetros de entrada (<code>IN</code>), de salida (<code>OUT</code>) y de entrada/salida (<code>INOUT</code>), que permiten pasar datos al procedimiento, retornar datos desde el procedimiento, o ambas cosas. (D)</p> Signup and view all the answers

¿Cuál es el propósito de la cláusula RETURNS en la definición de una función en SQL?

<p>Definir el tipo de dato del valor que la función devolverá. (A)</p> Signup and view all the answers

¿Cómo se invoca una función dentro de una consulta SQL?

<p>Nombrando la función directamente dentro de la expresión, como si fuera una columna o un valor literal. (C)</p> Signup and view all the answers

¿Qué es una excepción en el contexto de la programación de bases de datos?

<p>Un evento que ocurre durante la ejecución de un programa almacenado que interrumpe el flujo normal de las instrucciones. (A)</p> Signup and view all the answers

¿Cuál es el propósito de un gestor de excepciones (o handler) en SQL?

<p>Para definir qué acciones se deben llevar a cabo cuando se detecta una excepción específica. (C)</p> Signup and view all the answers

¿Qué acciones se pueden realizar dentro de un gestor de excepciones en SQL?

<p>Todas las anteriores. (C)</p> Signup and view all the answers

¿Cuál es la diferencia entre las cláusulas CONTINUE, EXIT y UNDO dentro de un gestor de excepciones?

<p><code>CONTINUE</code> ignora el error, <code>EXIT</code> termina la ejecución del programa y <code>UNDO</code> revierte los cambios. (C)</p> Signup and view all the answers

¿En qué situación se utiliza la cláusula SIGNAL en SQL?

<p>Para forzar la ocurrencia de una excepción específica, incluso si no se ha producido un error real. (A)</p> Signup and view all the answers

Si un procedimiento almacenado intenta insertar un registro con una clave primaria que ya existe, ¿qué tipo de excepción se generaría normalmente?

<p>Excepción de violación de clave única (error 1062). (B)</p> Signup and view all the answers

¿Cuál de las siguientes opciones describe mejor el uso de cursores, procedimientos y funciones almacenadas?

<p>Permiten la gestión y manipulación eficiente de datos en bases de datos complejas. (D)</p> Signup and view all the answers

Al usar un cursor para recorrer una tabla de Factura, ¿cómo podrías modificar el código para que se forcée una excepción si se encuentra una factura con un importe igual a cero?

<p>Usar la cláusula <code>SIGNAL</code> dentro del bucle del cursor para lanzar una excepción personalizada. (A)</p> Signup and view all the answers

Un procedimiento almacenado debe calcular el número total de productos de una categoría dada. ¿Qué tipo de parámetro sería más adecuado para pasar el nombre de la categoría al procedimiento?

<p>Un parámetro <code>IN</code> para recibir el nombre de la categoría. (C)</p> Signup and view all the answers

Estás diseñando una función para verificar si un código de país existe en una tabla. ¿Qué cláusula debes usar para especificar el tipo de valor que la función devolverá (por ejemplo, BOOLEAN para indicar si existe o no)?

<p><code>RETURNS</code> (D)</p> Signup and view all the answers

Flashcards

¿Qué son los cursores?

Estructuras similares a las variables que almacenan datos de una consulta.

¿Qué es DECLARE?

Palabra clave para crear un cursor.

¿Qué hace SCROLL?

Especifica el tipo de recorrido del cursor (secuencial o inverso).

¿Qué es OPEN?

Palabra clave para abrir un cursor.

Signup and view all the flashcards

¿Qué es FETCH?

Palabra clave para recorrer un cursor.

Signup and view all the flashcards

¿Qué es CLOSE?

Palabra clave para cerrar un cursor.

Signup and view all the flashcards

¿Qué permite UPDATE y DELETE?

Permiten modificar o eliminar

Signup and view all the flashcards

¿Qué son procedimientos y funciones almacenados?

Subrutinas que se almacenan en el sistema para ser ejecutados.

Signup and view all the flashcards

¿Qué es un PROCEDURE?

Bloque de código que puede recibir parámetros y manipular datos, incluso generar resultados.

Signup and view all the flashcards

¿Qué es una FUNCTION?

Bloque que devuelve un valor resultante de cálculos, puede recibir parámetros de entrada.

Signup and view all the flashcards

¿Qué indica IN?

Indica que el parámetro no cambia de valor en el procedimiento.

Signup and view all the flashcards

¿Qué indica OUT?

Indica que el parámetro cambia su valor en el interior del procedimiento.

Signup and view all the flashcards

¿Qué indica INOUT?

Indica que el procedimiento puede leer y modificar el valor del parámetro.

Signup and view all the flashcards

¿Qué es RETURNS?

Cláusula que determina el tipo de dato que devolverá la función.

Signup and view all the flashcards

¿Qué es un gestor de excepción?

Mecanismo para indicar al sistema qué tarea ejecutar cuando se detecta una excepción.

Signup and view all the flashcards

¿Qué hace EXIT en un handler?

Sentencia para abandonar la ejecución del código al detectar un error.

Signup and view all the flashcards

¿Qué hace CONTINUE en un handler?

Sentencia para ignorar el error y continuar la ejecución del código.

Signup and view all the flashcards

¿Qué hace UNDO en un handler?

Sentencia para deshacer todos los cambios realizados desde el inicio del bloque.

Signup and view all the flashcards

¿Qué hace SIGNAL?

Cláusula para forzar que ciertas situaciones sean tratadas como excepciones.

Signup and view all the flashcards

Study Notes

Introducción a Procedimientos y Funciones Almacenadas

  • Las bases de datos ofrecen múltiples opciones de lenguajes de programación.
  • Es importante conocer funcionalidades como cursores, procedimientos almacenados, funciones y excepciones
  • Se plantea un caso práctico para aproximarse a la teoría de este tema.

Cursores

  • Los cursores almacenan datos e información como resultado de una consulta.
  • Los datos incluidos en los cursores, se pueden recorrer de forma parecida a un "array".
  • Usar cursores es útil cuando una consulta resulta en múltiples filas de una tabla.

Creación de un Cursor

  • Se usa la cláusula DECLARE para crear un cursor.
  • La sintaxis es: DECLARE <nombre_cursor> [SCROLL] CURSOR FOR <consulta>;
  • La cláusula SCROLL es opcional.
  • SCROLL habilita el recorrido no secuencial del cursor (inversa o a saltos).
  • Un cursor declarado se abre con la cláusula OPEN: OPEN <nombre_cursor>;

Recorrer un Cursor

  • Se utiliza la cláusula FETCH para leer un nuevo registro con cada ejecución.
  • La sintaxis es: FETCH [NEXT|PRIOR|FIRST|LAST|RELATIVE <num_registros>|ABSOLUTE <num_registros>] FROM <nombre_cursor> INTO <variable1>[, <variable2>, ..., <variableN>];
  • Opciones disponibles:
    • NEXT: Devuelve el siguiente registro disponible (por defecto).
    • PRIOR: Devuelve el registro anterior.
    • FIRST: Devuelve el primer registro.
    • LAST: Devuelve el último registro.
    • RELATIVE: Devuelve el registro ubicado a <num_registros> del actual (positivo o negativo).
    • ABSOLUTE: Se ubica en el registro número <num_registros> (positivo o negativo).
  • Si se utiliza una cláusula diferente a NEXT, se debe crear el cursor con la cláusula SCROLL.
  • Para cerrar un cursor, se utiliza la cláusula CLOSE: CLOSE cursos_Socio;

Modificación o Borrado de Datos

  • En SQL/PSM, se puede modificar o eliminar el registro actual del cursor.
  • Cláusulas utilizadas:
    • UPDATE
    • DELETE
  • Sintaxis:
    • UPDATE <nombre_tabla> SET <campo1> = <valor1>[, <campo2> = <valor2>, ..., <campoN> = <valorN>] WHERE CURRENT OF <nombre_cursor>;
    • DELETE <nombre_tabla> WHERE CURRENT OF <nombre_cursor>;
  • Los cursores se combinan con estructuras de control como bucles.

Procedimientos y Funciones Almacenados

  • Son bloques de código almacenados en el sistema para ser ejecutados cuando se requiera.
  • También son conocidos como subrutinas.
  • Características:
    • Procedimiento: Admite parámetros de entrada, manipula datos, y puede generar resultados por parámetros de salida. Se declara con PROCEDURE.
    • Función: Devuelve un valor (resultado de cálculos). Admite parámetros de entrada. Se declara con FUNCTION.

Sintaxis de Declaración de Procedimientos

  • La sintaxis de creación es: CREATE PROCEDURE <nombre_proc> ([<param1>[, <param2>, ..., <paramN>]]) <declaraciones> BEGIN <lista_sentencias> END;
  • Tipos de parámetros: [IN | OUT | INOUT] <nombre_parámetro> <tipo>
  • Se invoca con la cláusula CALL: CALL <nombre_procedimiento> (parámetros);

Tipos de Parámetros de un Procedimiento

  • De entrada (IN): No cambian su valor durante la ejecución del procedimiento.
  • De salida (OUT): Cambian su valor dentro del procedimiento.
  • De entrada y salida (INOUT): El procedimiento puede leer y/o modificar su valor.

Sintaxis de Funciones

  • La sintaxis es: CREATE FUNCTION <nombre_funcion> ([<param1>[, <param2>, ..., <paramN>]]) RETURNS <tipo_dato> <declaraciones> BEGIN <lista_sentencias> RETURN <valor_a_devolver>; END;
  • Las funciones solo pueden tener parámetros de entrada (IN).
  • Requieren la cláusula RETURNS para especificar el tipo de dato que devuelven.
  • Requieren la cláusula RETURN para indicar el valor que devuelve.
  • Las funciones se invocan como expresiones.

Excepciones: Control de Errores

  • Los programas almacenados pueden encontrar condiciones de error.
  • Esto se puede dar por varias causas como casuísticas no tomadas cuenta o fallos del sistema.
  • En esos casos, la ejecución se detiene y se devuelve un error predeterminado.

Gestor de Excepciones

  • Permite indicar qué tarea debe ejecutarse al detectar una excepción.
  • Los estados de error devuelven un código numérico.
  • La sintaxis para crear un gestor de excepciones es: DECLARE {EXIT|CONTINUE|UNDO} HANDLER FOR <cod_estado1>[, <cod_estado2>, ..., <cod_estadoN>] {<sentencia>| BEGIN [ATOMIC] <lista_sentencias>; END;}
  • Campos y cláusulas:
    • EXIT: Abandona la ejecución del código al detectar el error.
    • CONTINUE: Ignora el error y continúa la ejecución.
    • UNDO: Deshace los cambios desde el inicio del bloque de código que causó el error.
    • <cod_estadoN>: Código de error para el cual se define el comportamiento.
    • ATOMIC: Se usa si el handler se declara como UNDO.
    • <lista_sentencias>: Código que ejecutará el gestor de excepciones.

Forzar Excepciones

  • A veces es necesario tratar ciertas situaciones como excepciones.
  • Se utiliza la cláusula SIGNAL.

Studying That Suits You

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

Quiz Team

Related Documents

More Like This

Benefits of Stored Procedures in SQL
16 questions
Introduction to Stored Procedures
40 questions
Stored Procedures in MySQL
13 questions

Stored Procedures in MySQL

BrilliantRoentgenium9821 avatar
BrilliantRoentgenium9821
Use Quizgecko on...
Browser
Browser