当前位置: 首页 > article >正文

数据库:实验六存储过程

一、增加供应商相关列sqty

任务要求

在S表中增加一列供应零件总数量(sqty),默认值为0。

use demo;

#代码开始
#在S表中增加一列供应零件总数量(sqty),默认值为0。

alter table s add sqty int default 0;


#代码结束

desc s;

二、定义、调用简单存储过程

任务要求

1、定义简单存储过程:计算所有供应商供应零件总数量并修改供应商相关列sqty。
2、调用存储过程。

注意:定义存储过程前使用DELIMITER 命令将结束命令修改为其他字符。

use demo;

#代码开始
#1、定义简单存储过程:计算所有供应商供应零件总数量并修改供应商相关列sqty。
drop procedure if exists proc_1;
delimiter $$
create procedure proc_1()
begin
    update s set sqty=(select sum(qty) from spj where spj.sno=s.sno);
end$$


#2、调用存储过程。
call proc_1();


#代码结束

select * from s;

三、定义、调用带参数存储过程(1)

任务要求

1、定义带参数存储过程:查询返回指定供应商的供应零件总数量。
2、调用带参数存储过程。

以供应商S1为参数,调用存储过程,将结果存入@sqty1
以供应商S2为参数,调用存储过程,将结果存入@sqty2
注意:
1、定义存储过程前使用DELIMITER 命令将结束命令修改为其他字符。
2、在多次执行创建存储过程代码评测时,可能会出现以下错误:
ERROR 1304 (42000) at line 7: PROCEDURE proc_1 already exists
此时,在创建存储过程前使用以下语句删除已有的存储过程。
drop procedure if exists proc_1;

use demo;

#代码开始
#1、定义带参数存储过程:查询返回指定供应商的供应零件总数量。
drop procedure if exists statistics;
DELIMITER $$
CREATE PROCEDURE statistics(IN in_sno CHAR(20),OUT out_sqty INT)
BEGIN
	SELECT SUM(qty) INTO out_sqty FROM spj WHERE sno = in_sno;
END $$
DELIMITER ;



#2、调用带参数存储过程。
#以供应商S1为参数,调用存储过程,将结果存入@sqty1
CALL statistics('S1',@sqty1);

#以供应商S2为参数,调用存储过程,将结果存入@sqty2
CALL statistics('S2',@sqty2);

#代码结束

select @sqty1,@sqty2

四、定义、调用带参数存储过程(2)

任务要求

1、定义带参数存储过程:插入一个指定供应商信息 ('S6','泰欣',40,'十堰')(所有信息由参数提供)。
2、调用带参数存储过程。

注意:定义存储过程前使用DELIMITER 命令将结束命令修改为其他字符。

use demo;

#代码开始
#1、定义带参数存储过程:插入一个指定供应商信息 ('S6','泰欣',40,'十堰')(所有信息由参数提供)。
DELIMITER $$
drop procedure if exists s_insert;
CREATE PROCEDURE s_insert(
	s_sno CHAR(20),
	s_sname CHAR(20),
	s_status INT,
	s_city CHAR(20)
)
BEGIN
	DECLARE s_count INT;
	SELECT COUNT(*) INTO s_count FROM s WHERE sno = s_sno;
  IF s_count >0 
		THEN SELECT ( '供应商已存在,请重新插入!' );
  ELSEIF s_count = 0 
		THEN INSERT INTO s ( sno, sname, STATUS, city )VALUES( s_sno, s_sname, s_status, s_city);
  END IF;
END $$
DELIMITER ;


#2、调用带参数存储过程。
CALL s_insert('S6','泰欣',40,'十堰');
SELECT * FROM s WHERE sno = 'S6';
#代码结束

五、定义、调用带参数存储过程(3)

任务要求

1、定义带参数存储过程:删除指定零件代码的供应信息,并返回删除的元组数。
2、调用带参数存储过程。

以零件代码P5为参数,调用存储过程,将结果存入@p_count1
以零件代码P6为参数,调用存储过程,将结果存入@p_count2
注意:定义存储过程前使用DELIMITER 命令将结束命令修改为其他字符。

use demo;

#代码开始
#1、定义带参数存储过程:删除指定零件代码的供应信息,并返回删除的元组数。
drop procedure if exists s_delete;

DELIMITER $$
CREATE PROCEDURE s_delete(IN in_sno CHAR(20),OUT d_sum INT)
BEGIN
	DELETE FROM spj WHERE pno = in_sno;
	SELECT ROW_COUNT() INTO d_sum;
END $$
DELIMITER ;


#2、调用带参数存储过程。
#以零件代码P5为参数,调用存储过程,将结果存入@p_count1
CALL s_delete('P5',@p_count1);

#以零件代码P6为参数,调用存储过程,将结果存入@p_count2
CALL s_delete('P6',@p_count2);

#代码结束
select @p_count1,@p_count2

六、定义、调用带参数存储过程(4)

任务要求

1、定义带参数存储过程:修改指定代码项目的其它信息(所有信息由参数提供)。
2、调用带参数存储过程。

修改工程项目代码 J7(jno) 的信息为: 汽车制造厂 (jname) 十堰 (city)
注意:定义存储过程前使用DELIMITER 命令将结束命令修改为其他字符。

use demo;

#代码开始
#1、定义带参数存储过程:修改指定代码项目的其它信息(所有信息由参数提供)。
drop PROCEDURE if exists s_update;
DELIMITER $$
CREATE PROCEDURE s_update(
	s_sno CHAR(20),
	s_sname CHAR(20),
	s_city CHAR(20)
)
BEGIN
	DECLARE s_count INT;
	SELECT COUNT(*) INTO s_count FROM j WHERE jno = s_sno;
  IF s_count = 0 
		THEN SELECT ( '没有你要修改的数据' );
  ELSEIF s_count > 0 
		THEN UPDATE j SET jname = s_sname,city = s_city WHERE j.jno = s_sno;
  END IF;
END $$
DELIMITER ;



#2、调用带参数存储过程。
# 修改工程项目代码 J7(jno) 的信息为: 汽车制造厂 (jname)  十堰 (city)
CALL s_update ( 'J7', '汽车制造厂', '十堰' );

#代码结束

select * from j where jno = 'J7';


http://www.kler.cn/a/288715.html

相关文章:

  • 将Excel文件的两个表格经过验证后分别读取到Excel表和数据库
  • C 语言 【模拟实现内存库函数】
  • JVM 中的完整 GC 流程
  • 机器学习在医疗健康领域的应用
  • MySQL重难点(一)索引
  • 【vue2.0入门】vue基本语法
  • websocket:两台PC间数据传输
  • Leetcode 146. LRU 缓存(Medium)
  • 【知识库系列】MPR/多模态方向观察:图像视频与3D生成
  • 你的专利真的值钱吗?五重标准检验,让你的创新价值飙升
  • 深度学习:革新药物心脏毒性预测的新篇章
  • 局域网通信时,解决在一些设备上NsdManager发现服务失败的问题
  • 9_3_LineEdit
  • 抓取海外电商平台数据时,是否最好使用当地的IP?
  • 基础闯关4
  • 数学建模常用工具总结
  • 关于Linux(CentOS 7)中的用户sudo命令
  • 知识付费小程序搭建:开启知识变现新时代
  • 采用SIP封装的传感器系列:ARS19510LUBBTN、A19520LUBBTN、A1696PKHTN、A1694PKLN-RNZBE(资料)
  • Learning——protobuf的下载
  • 【Springboot服务实现类】用户登录逻辑梳理(未完待续)
  • 【管理型文档】软件需求管理过程(原件)
  • 使用 ip route 命令配置 Linux 路由表的详细指南
  • AI BT人工智能交互平台应用程序重磅上线,开启全球数字革命
  • 探索 HarmonyOS NEXT Developer Beta6,开启创新应用
  • 钢铁百科:NM360钢板材质、NM360机械性能、NM360韧性焊接性能