数据库编程创建一个存储过程,以供应商号、工程号、零件号、供应量为参数,在 SPJ 表中插入一条记录,如果该记录已存在,显示"记录已存在!",否则显示"插入成功!"。
时间: 2024-05-07 21:22:26 浏览: 165
下面是创建该存储过程的 SQL 代码:
```
CREATE PROCEDURE insert_SPJ
@supplier_id INT,
@project_id INT,
@part_id INT,
@quantity INT
AS
BEGIN
IF EXISTS (SELECT * FROM SPJ WHERE supplier_id = @supplier_id AND project_id = @project_id AND part_id = @part_id)
BEGIN
PRINT '记录已存在!'
END
ELSE
BEGIN
INSERT INTO SPJ (supplier_id, project_id, part_id, quantity)
VALUES (@supplier_id, @project_id, @part_id, @quantity)
PRINT '插入成功!'
END
END
```
该存储过程的作用是向 SPJ 表中插入一条记录,如果该记录已经存在则提示“记录已存在!”,否则插入成功并提示“插入成功!”。使用时需要传入供应商号、工程号、零件号、供应量这四个参数。
相关问题
数据库实现创建一个存储过程,以工程号为参数,删除J表及SPJ表中相应的记录,如果不存在该工程,显示“无此工程!”;如果该工程没有零件供应记录,显示“该工程没有供应记录,J表中记录已删除!”;如果该工程有零件供应记录,显示“已删除J表及SPJ表中的记录!”
好的,以下是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表记录数量的情况,返回相应的提示信息。
希望这个存储过程可以解决您的需求。
创建一个存储过程,以工程号为参数,删除J表及SPJ表中相应的记录,如果不存在该工程,显示“无此工程!”;如果该工程没有零件供应记录,显示“该工程没有供应记录,J表中记录已删除!”;如果该工程有零件供应记录,显示“已删除J表及SPJ表中的记录!”
好的,以下是您所需的存储过程代码:
```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表记录数量的情况,返回相应的提示信息。
希望这个存储过程可以解决您的需求。
阅读全文