sqlserver------数据库的存储过程(练习)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: sqlserver------数据库的存储过程(练习)

对于数据库的存储过程之前的专题有讲过


这里具体讲述存储过程的编写方法:


例题:有heat表和eatables两张表,分别为:


eatables



heat:protein(蛋白质),fat(脂肪),sugar(含糖量),kj(热量),以100克为单位



1.写一个存储过程Diet,以食物重量(克)为参数,输出该重量的不同类产品中,蛋白质成分最高的食物及其蛋白质含量。输出类似如下:


exec Diet 200


由于检索内容较为复杂:


所以先写检索内容:


s

elect name,a.type,max
  from(select type,max(protein)*(@num/100) max from eatables,heat
  where heat.id = eatables.id
  group by type)p,
  eatables as a,heat as b
  where b.protein*(@num/100)=p.max and a.id=b.id

接着加上存储过程:


create procedure Diet(
  @num int
)
as
begin
  declare @name varchar(10),@type varchar(10),@max decimal(8,2)
  declare diet_cursor cursor for
  select name,a.type,max
  from(select type,max(protein)*(@num/100) max from eatables,heat
  where heat.id = eatables.id
  group by type)p,
  eatables as a,heat as b
  where b.protein*(@num/100)=p.max and a.id=b.id
open diet_cursor
fetch next from diet_cursor into @name,@type,@max
while @@FETCH_STATUS=0
begin
print '在' +@type+'食品中'
print '每'+convert(varchar,@num)+'克'+@name+'含有的蛋白质最高,达到'+convert(varchar,@max)+'克'
fetch next from diet_cursor into @name,@type,@max
end
close diet_cursor
deallocate diet_cursor
end

输入


exec Diet 200




2.写一个存储过程HeatReport,找出平均糖含量最高的食物及其糖含量。输出类似如下:

exec HeatReport;


先写检索过程:


select top 1 type,avg_sugar from
  (select type,sum(sugar)/count(1) as avg_sugar from eatables,heat
  where eatables.id=heat.id
  group by type)p
  order by p.avg_sugar desc

再写存储过程


create procedure HeatReport
as
begin
  declare @type varchar(10),@avg_sugar decimal(8,2)
  declare diet_cursor cursor for
  select top 1 type,avg_sugar from
  (select type,sum(sugar)/count(1) as avg_sugar from eatables,heat
  where eatables.id=heat.id
  group by type)p
  order by p.avg_sugar desc
  open diet_cursor
  fetch next from diet_cursor into @type,@avg_sugar
  while @@FETCH_STATUS=0
  begin
  print'在面类,米面类,水产类食品中'
  print @type+'的平均糖含量最高,达到每100克食物含有'+convert(varchar,@avg_sugar)+'克'
  fetch next from diet_cursor into @type,@avg_sugar
  end
close diet_cursor
deallocate diet_cursor
end

输入

exec HeatReport


得:


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
7天前
|
SQL IDE Java
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
8天前
|
SQL 存储 关系型数据库
关系型数据库中的SQL Server
【6月更文挑战第11天】
44 3
|
7天前
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)
|
8天前
|
SQL 弹性计算 API
云服务器 ECS产品使用问题之如何通过API调用阿里云服务器上SQL Server数据库中的数据
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
15天前
|
SQL 存储 数据库
如何在SQLServer中创建数据库
在SQL Server中创建数据库,可通过SSMS的图形界面或T-SQL语句。在SSMS中,连接到服务器,右键“数据库”选择“新建数据库”,配置属性后点击确定。使用T-SQL,连接到服务器,编写CREATE DATABASE语句指定数据库名称、文件路径及大小信息,执行查询完成创建。确保有足够磁盘空间,并注意权限设置。
|
18天前
|
存储 关系型数据库 MySQL
MySQL数据库——存储过程-条件处理程序(通过SQLSTATE指定具体的状态码,通过SQLSTATE的代码简写方式 NOT FOUND)
MySQL数据库——存储过程-条件处理程序(通过SQLSTATE指定具体的状态码,通过SQLSTATE的代码简写方式 NOT FOUND)
12 0
MySQL数据库——存储过程-条件处理程序(通过SQLSTATE指定具体的状态码,通过SQLSTATE的代码简写方式 NOT FOUND)
|
18天前
|
存储 关系型数据库 MySQL
MySQL数据库——存储过程-游标(介绍-声明游标、打开游标、获取游标记录、关闭游标,案例)
MySQL数据库——存储过程-游标(介绍-声明游标、打开游标、获取游标记录、关闭游标,案例)
19 0
|
18天前
|
存储 SQL 关系型数据库
MySQL数据库——存储过程-循环(while、repeat、loop)
MySQL数据库——存储过程-循环(while、repeat、loop)
56 0
|
数据库 SQL 数据安全/隐私保护
|
21天前
|
SQL 监控 安全
sql server数据库监控
SQL Server数据库监控是收集、聚合和监控SQL服务器的各种指标的过程,旨在维护SQL数据库的运行状况和可用性,优化性能,并预防或快速响应错误。以下是一些关于SQL Server数据库监控的核心