创建有参存储过程 向学生表加信息 如果未添加则添加 已添加则触发异常
时间: 2024-02-24 13:56:13 浏览: 125
好的,我可以为您提供一个简单的示例来创建这个有参存储过程。假设学生表的结构如下:
```sql
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
grade VARCHAR(10)
);
```
那么可以编写如下的存储过程来实现您的需求:
```sql
DELIMITER $$
CREATE PROCEDURE add_student(
IN student_id INT,
IN student_name VARCHAR(50),
IN student_age INT,
IN student_grade VARCHAR(10)
)
BEGIN
DECLARE existing_id INT;
SELECT id INTO existing_id FROM students WHERE id = student_id;
IF existing_id IS NOT NULL THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'This student already exists!';
ELSE
INSERT INTO students (id, name, age, grade) VALUES (student_id, student_name, student_age, student_grade);
END IF;
END$$
DELIMITER ;
```
这个存储过程接受四个参数:学生的 id、姓名、年龄和班级。首先它会查询学生表,检查是否存在与给定 id 相同的学生记录,如果已经存在,则会触发一个异常,否则会将新的学生记录插入到表中。
注意,这个存储过程使用了 SIGNAL 语句来触发异常,这是 MySQL 5.5 及以上版本引入的一种新的错误处理方式。如果您的 MySQL 版本较低,可以使用旧的方式,比如使用 DECLARE EXIT HANDLER FOR SQLEXCEPTION。
阅读全文