bloque3:programacion
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
bloque3:programacion [2021/11/15 18:41] – [Ventajas] fernando | bloque3:programacion [2024/09/16 15:37] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 185: | Línea 185: | ||
</ | </ | ||
- | ==== Etiquetas | + | ==== Salir de un procedimiento: |
Si deseo terminar un procedimiento en un momento dado, puedo usar la sentencia '' | Si deseo terminar un procedimiento en un momento dado, puedo usar la sentencia '' | ||
Línea 213: | Línea 213: | ||
END procedimiento; | END procedimiento; | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Función LAST_INSERT_ID() ==== | ||
+ | Cuando queremos ejecutar varias operaciones que modifican la base de datos es recomendable agruparlas en una // | ||
+ | |||
+ | La función '' | ||
+ | |||
+ | <code sql> | ||
+ | -- Se desea insertar una nueva pista abierta. Para ello debo | ||
+ | -- insertar la pista en la tabla pistas, y también en la tabla | ||
+ | -- pistas abiertas: | ||
+ | |||
+ | -- Primero hago la inserción en la tabla padre: pistas | ||
+ | |||
+ | INSERT INTO pistas (codigo, tipo, precio, id_polideportivo) | ||
+ | VALUES (p_codigo, p_tipo, p_precio, p_id_polideportivo); | ||
+ | |||
+ | -- Después hago la inserción en la tabla hija: pistas_abiertas | ||
+ | -- En este caso necesito conocer el id que se generó en la inserción | ||
+ | -- anterior, ya que es clave ajena en esta tabla | ||
+ | |||
+ | INSERT INTO pistas_abiertas (id_pista, operativa) | ||
+ | VALUES (LAST_INSERT_ID(), | ||
</ | </ | ||
Línea 260: | Línea 284: | ||
==== Creación de scripts ==== | ==== Creación de scripts ==== | ||
- | A la hora de implementar nuevos procedimientos y funciones hay que tener en cuenta algunas cuestiones. Puesto que el delimitador ';' | + | A la hora de implementar nuevos procedimientos y funciones hay que tener en cuenta algunas cuestiones. Puesto que el delimitador |
Así, la forma habitual de escribir procedimientos o funciones es a través de la creación de scripts //SQL// utilizando la orden '' | Así, la forma habitual de escribir procedimientos o funciones es a través de la creación de scripts //SQL// utilizando la orden '' | ||
Línea 266: | Línea 290: | ||
<code sql> | <code sql> | ||
DELIMITER | | DELIMITER | | ||
+ | |||
CREATE PROCEDURE ver_pistas() | CREATE PROCEDURE ver_pistas() | ||
BEGIN | BEGIN | ||
SELECT * FROM pistas; | SELECT * FROM pistas; | ||
- | END | + | END | |
- | | | + | |
DELIMITER ; | DELIMITER ; | ||
</ | </ | ||
- | Una vez creado el procedimiento o función, desde un script o directamente en la consola, la forma de invocarlo es a través de la instrucción '' | ||
- | <code sql> | ||
- | CALL ver_pistas(); | ||
- | </ | ||
{{ youtube> | {{ youtube> | ||
Línea 314: | Línea 335: | ||
CREATE PROCEDURE nueva_pista(p_codigo VARCHAR(10), | CREATE PROCEDURE nueva_pista(p_codigo VARCHAR(10), | ||
p_precio FLOAT, p_id_polideportivo INT) | p_precio FLOAT, p_id_polideportivo INT) | ||
- | procedimiento: | + | BEGIN |
- | | + | |
+ | |||
+ | -- Después se declara el Handler | ||
DECLARE EXIT HANDLER FOR SQLEXCEPTION | DECLARE EXIT HANDLER FOR SQLEXCEPTION | ||
BEGIN | BEGIN | ||
ROLLBACK; | ROLLBACK; | ||
+ | -- Si se quiere mostrar un mensaje: (opcional) | ||
SELECT 'An error has occurred, operation rollbacked'; | SELECT 'An error has occurred, operation rollbacked'; | ||
END; | END; | ||
- | SET existe_polideportivo = (SELECT COUNT(*) FROM polideportivos | ||
- | WHERE id = p_id_polideportivo); | ||
- | IF existe_polideportivo = 0 THEN | ||
- | LEAVE procedimiento; | ||
- | END IF; | ||
START TRANSACTION; | START TRANSACTION; | ||
Línea 336: | Línea 355: | ||
COMMIT; | COMMIT; | ||
- | END procedimiento; | + | END; |
</ | </ | ||
bloque3/programacion.1637001662.txt.gz · Última modificación: 2024/09/16 15:38 (editor externo)