一、实验目的

  1. 了解存储过程和过程化SQL的概念和基本特点。
  2. 掌握存储过程和过程化SQL的创建、执行和调用方法。
  3. 了解存储过程和过程化SQL在实际应用中的作用和优势。

二、实验环境

  • 操作系统:Windows 10
  • 数据库系统:MySQL 5.7

三、实验内容

1. 创建存储过程

(1) 创建一个简单的存储过程,实现输出'Hello World!' 的功能。

DELIMITER $$
CREATE PROCEDURE hello_world()
BEGIN
    SELECT 'Hello World!';
END$$
DELIMITER ;

(2) 创建一个包含参数的存储过程,实现两个数的加法运算。

DELIMITER $$
CREATE PROCEDURE add(IN a INT, IN b INT)
BEGIN
    SELECT a + b;
END$$
DELIMITER ;

2. 执行存储过程

(1) 执行无参数的存储过程。

CALL hello_world();

(2) 执行带参数的存储过程。

CALL add(3, 4);

3. 调用存储过程

(1) 调用无参数的存储过程。

SET @result = '';
CALL hello_world(@result);
SELECT @result;

(2) 调用带参数的存储过程。

SET @result = '';
CALL add(3, 4, @result);
SELECT @result;

4. 创建过程化SQL

(1) 创建一个过程化SQL,实现查询订单的总金额。

DELIMITER $$
CREATE FUNCTION total_amount(IN order_id INT)
RETURNS DECIMAL(10, 2)
BEGIN
    DECLARE total DECIMAL(10, 2);
    SELECT SUM(quantity * unit_price) INTO total FROM order_details WHERE order_id = order_id;
    RETURN total;
END$$
DELIMITER ;

5. 执行过程化SQL

SELECT total_amount(10248);

四、实验结果

1. 创建存储过程

(1) 创建一个简单的存储过程,实现输出'Hello World!' 的功能。

CREATE PROCEDURE hello_world()
BEGIN
    SELECT 'Hello World!';
END

(2) 创建一个包含参数的存储过程,实现两个数的加法运算。

CREATE PROCEDURE add(IN a INT, IN b INT)
BEGIN
    SELECT a + b;
END

2. 执行存储过程

(1) 执行无参数的存储过程。

CALL hello_world();

执行结果:

Hello World!

(2) 执行带参数的存储过程。

CALL add(3, 4);

执行结果:

7

3. 调用存储过程

(1) 调用无参数的存储过程。

SET @result = '';
CALL hello_world(@result);
SELECT @result;

执行结果:

@result
Hello World!

(2) 调用带参数的存储过程。

SET @result = '';
CALL add(3, 4, @result);
SELECT @result;

执行结果:

@result
7

4. 创建过程化SQL

(1) 创建一个过程化SQL,实现查询订单的总金额。

CREATE FUNCTION total_amount(IN order_id INT)
RETURNS DECIMAL(10, 2)
BEGIN
    DECLARE total DECIMAL(10, 2);
    SELECT SUM(quantity * unit_price) INTO total FROM order_details WHERE order_id = order_id;
    RETURN total;
END

5. 执行过程化SQL

SELECT total_amount(10248);

执行结果:

total_amount(10248)
440.00

五、实验总结

本次实验主要学习了存储过程和过程化SQL的基本概念、创建、执行和调用方法,以及在实际应用中的作用和优势。通过实验,我对存储过程和过程化SQL的使用有了更深入的了解,能够更加灵活地运用它们解决实际问题。同时,我也发现,在实际应用中,存储过程和过程化SQL能够提高数据库的效率和安全性,减少了代码的重复性,更加方便了维护和管理。

存储过程和过程化SQL实验报告 - MySQL 5.7

原文地址: https://www.cveoy.top/t/topic/od8Q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录