数据库实现创建一个存储过程,以工程号为参数,删除J表及SPJ表中相应的记录,如果不存在该工程,显示“无此工程!”;如果该工程没有零件供应记录,显示“该工程没有供应记录,J表中记录已删除!”;如果该工程有零件供应记录,显示“已删除J表及SPJ表中的记录!”
时间: 2024-03-06 11:48:18 浏览: 60
好的,以下是MySQL数据库实现的存储过程代码:
```mysql
DELIMITER // -- 改变语句结束符为 //
CREATE PROCEDURE delete_project(IN pno VARCHAR(20))
BEGIN
DECLARE spj_count INT;
SELECT COUNT(*) INTO spj_count FROM SPJ WHERE JNO IN (
SELECT JNO FROM J WHERE PNO = pno
);
IF spj_count > 0 THEN
DELETE FROM SPJ WHERE JNO IN (
SELECT JNO FROM J WHERE PNO = pno
);
END IF;
DELETE FROM J WHERE PNO = pno;
IF ROW_COUNT() = 0 THEN
SELECT '无此工程!' AS message;
ELSEIF spj_count = 0 THEN
SELECT '该工程没有供应记录,J表中记录已删除!' AS message;
ELSE
SELECT '已删除J表及SPJ表中的记录!' AS message;
END IF;
END//
DELIMITER ; -- 恢复语句结束符为 ;
```
该存储过程接受一个工程号作为参数,首先查询SPJ表中与该工程相关的记录数量,如果数量大于0,则删除SPJ表中对应的记录;然后删除J表中对应的记录。最后,根据删除的行数以及SPJ表记录数量的情况,返回相应的提示信息。
希望这个存储过程可以解决您的需求。
阅读全文