当前位置:文档之家› 数据库函数、存储过程实验报告

数据库函数、存储过程实验报告

南京信息工程大学数据库系统实验(实习)报告实验(实习)名称数据库系统实验4 实验(实习)日期2016-6-7 得分指导教师顾韵华系计软院专业计科年级2014级班次计科 3 班姓名仇彤学号20141308071一、实验目1、掌握T-SQL函数及其调用方法。

2、掌握存储过程的定义及执行方法。

3、掌握有参存储过程的定义及执行方法。

4、掌握C#访问数据库的方法。

二、实验内容1、使用系统函数(DA TEDIFF(d,date_expr1,date_expr2)),计算今天距离“2020-1-1”还剩多少天。

(P299"思考与练习")2、编写T-SQL程序,利用系统转换函数,检索总订购商品数在10~19的客户姓名。

3、定义函数RectArea,计算一个长方形的面积(长、宽作为函数的参数)。

4、在SPDG数据库中定义函数,根据商品编号,查询该商品的名称;(函数名为QryGoods)。

5、在SPDG数据库中定义存储过程GetSPBH,返回所有商品编号,并使用EXEC语句执行存储过程。

6、在SPDG数据库中定义存储过程KH_NJ_Qry,返回江苏南京的客户编号、姓名、及其订购商品的编号、商品名称和数量,并使用EXEC语句执行存储过程。

7、在SPDG数据库中定义存储过程SP_FOOD_Qry,返回食品类商品编号、商品名称及其订购客户编号、姓名、订购数量,并使用EXEC语句执行存储过程。

8、定义存储过程SP_Total,查询指定商品编号的总订购数。

并执行该存储过程。

9、定义存储过程SP_TotalCost,查询指定商品编号的总订购金额。

并执行该存储过程。

10、定义存储过程SP_Name_Qry,查询指定商品名称的商品信息。

并执行该存储过程。

11、定义存储过程SP_Name_Qry1,查询指定商品名称的商品信息;若存在,输出1;否则,输出0。

并执行该存储过程。

12、定义存储过程SP_Name_Qry2,查询指定商品名称的商品信息;若存在,用输出参数传出1;否则传出0。

三、实验过程与结果1、使用系统函数(DATEDIFF(d,date_expr1,date_expr2)),计算今天距离“2020-1-1”还剩多少天。

(P299"思考与练习")设计的SQL语句如下:print datediff(d,getdate(),'2020-1-1')执行结果:2、编写T-SQL程序,利用系统转换函数,检索总订购商品数在10~19的客户姓名。

设计的SQL语句如下:use SPDGselect 客户姓名from KHB x,(select b.客户编号,SUM(数量) as 总数量from KHB a,SPDGB bwhere a.客户编号=b.客户编号group by b.客户编号)ywhere x.客户编号=y.客户编号and CAST(y.总数量as CHAR(3)) like '1_'执行结果:3、定义函数RectArea,计算一个长方形的面积(长、宽作为函数的参数)。

设计的SQL语句如下:use SPDGgoif exists(select name from sysobjectswhere type='FN' and name='RectArea')drop function QryGoodsgocreate function RectArea(@l1 int,@l2 int)returns intasbeginreturn @l1*@l2;endgodeclare @a int,@b intset @a=10set @b=9declare @area intselect @area=dbo.RectArea(@a,@b);print @area执行结果:4、在SPDG数据库中定义函数,根据商品编号,查询该商品的名称;(函数名为QryGoods)。

设计的SQL语句如下:use SPDGgoif exists(select name from sysobjectswhere type='FN' and name='QryGoods')drop function QryGoodsgocreate function QryGoods(@bh char(9))returns char(20)asbegindeclare @name char(20)select @name=(select 商品名称from SPB awhere a.商品编号=@bh)return @nameendgodeclare @bh2 char(9)set @bh2='10010001'declare @name2 char(20)select @name2=dbo.QryGoods(@bh2);print @name2执行结果:5、在SPDG数据库中定义存储过程GetSPBH,返回所有商品编号,并使用EXEC语句执行存储过程。

设计的SQL语句如下:use SPDGif exists(select name from sysobjectswhere name='GetSPBH' and type='p')drop procedure GetSPBHgocreate procedure GetSPBHasselect 商品编号from SPBgoexec GetSPBH执行结果:6、在SPDG数据库中定义存储过程KH_NJ_Qry,返回江苏南京的客户编号、姓名、及其订购商品的编号、商品名称和数量,并使用EXEC语句执行存储过程。

设计的SQL语句如下:use SPDGif exists(select name from sysobjectswhere name='KH_NJ_Qry' and type='p')drop procedure KH_NJ_Qrygocreate procedure KH_NJ_Qryasselect a.客户编号,a.客户姓名,c.商品编号,c.数量,b.商品名称from KHB a,SPB b,SPDGB cwhere a.客户编号=c.客户编号and c.商品编号=b.商品编号and a.所在省市='江苏南京'goexec KH_NJ_Qry执行结果:7、在SPDG数据库中定义存储过程SP_FOOD_Qry,返回食品类商品编号、商品名称及其订购客户编号、姓名、订购数量,并使用EXEC语句执行存储过程。

设计的SQL语句如下:use SPDGif exists(select name from sysobjectswhere name='SP_FOOD_Qry' and type='p')drop procedure SP_FOOD_Qrygocreate procedure SP_FOOD_Qryasselect a.客户编号,a.客户姓名,c.商品编号,c.数量,b.商品名称from KHB a,SPB b,SPDGB cwhere a.客户编号=c.客户编号and c.商品编号=b.商品编号and b.商品类别='食品'goexec SP_FOOD_Qry执行结果:8、定义存储过程SP_Total,查询指定商品编号的总订购数。

并执行该存储过程。

设计的SQL语句如下:use SPDGif exists(select name from sysobjectswhere name='SP_Total' and type='p')drop procedure SP_Totalgocreate procedure SP_Total@num char(10)asselect SUM(数量) as 总订购数from SPDGBwhere 商品编号=@numgoexec SP_Total '10010001'执行结果:9、定义存储过程SP_TotalCost,查询指定商品编号的总订购金额。

并执行该存储过程。

设计的SQL语句如下:use SPDGif exists(select name from sysobjectswhere name='SP_Totalcost' and type='p')drop procedure SP_Totalcostgocreate procedure SP_Totalcost@num char(10)asdeclare @number floatdeclare @money floatselect @number=SUM(数量)from SPDGBwhere 商品编号=@numselect 单价*@number as 总订购金额from SPBwhere 商品编号=@numgoexec SP_Totalcost '10020001'执行结果:10、定义存储过程SP_Name_Qry,查询指定商品名称的商品信息。

并执行该存储过程。

设计的SQL语句如下:use SPDGif exists(select name from sysobjectswhere name='SP_Name_Qry' and type='p')drop procedure SP_Name_Qrygocreate procedure SP_Name_Qry@name char(20)asselect *from SPBwhere 商品名称=@namegoexec SP_Name_Qry '休闲服'执行结果:11、定义存储过程SP_Name_Qry1,查询指定商品名称的商品信息;若存在,输出1;否则,输出0。

并执行该存储过程。

设计的SQL语句如下:use SPDGif exists(select name from sysobjectswhere name='SP_Name_Qry1' and type='p')drop procedure SP_Name_Qry1gocreate procedure SP_Name_Qry1@name char(20)asif exists(select *from SPBwhere 商品名称=@name)print 1elseprint 0goexec SP_Name_Qry1 '咖啡'执行结果:12、定义存储过程SP_Name_Qry2,查询指定商品名称的商品信息;若存在,用输出参数传出1;否则传出0。

相关主题