SQL SERVER 2000实用教程习题及实验参考答案(2)

2019-03-22 20:29

第8章

1、 执行存储过程,字符串变量 2、A、D

3、存储过程与存储在客户计算机的本地T-SQL语句相比,它具有如下优点: 存储过程在服务器端运行,而且存储过程是预编译的,执行速度快。如果某个操作需要大量的T-SQL语句或重复执行,那么使用存储过程比直接使用T-SQL语句执行得更快。

用户可以通过发送一条执行存储过程的语句实现一个复杂的操作,而不需要在网络上发送几百条T-SQL语句,这样可以减少在网络流量

使用存储过程可以增强代码的重用性和共享性,存储过程在被创建后,可以在程序中被多次调用,而不必重新编写。

4、SQL Server支持五种类型的存储过程:系统存储过程、本地存储过程、临时存储过程、远程存储过程、扩展存储过程。 5、USE Sales

GO

CREATE PROC proc_find @goodname Varchar(20) AS

IF EXISTS(SELECT * FROM Goods WHERE 商品名称=@goodname) RETURN 1 ELSE RETURN 0 6、在Sales数据库中建立一个名为date_to_date_sales的存储过程:该存储过程将返回在两个指定日期之间的所有销售记录。

USE Sales GO

CREATE PROC date_to_date_sales @StartDate datetime, @EndDate datetime AS

SELECT * FROM sell

WHERE 售出时间 BETWEEN @StartDate AND @EndDate

第9章

1、inserted,UPDATE,DELETE 2、D

3、触发器是一种与数据表紧密关联的特殊的存储过程,当该数据表有插入(INSERT)、更改(UPDATE)或删除(DELETE)事件发生时,所设置的触发器就会自动被执行,以进行维护数据完整性,或其他一些特殊的数据处理工作。触发器分为AFTER

6

触发器和INSTEAD OF 触发器两种类型。

4、USE Sales GO

CREATE TRIGGER tri_ReportGoods ON Goods FOR UPDATE AS

IF UPDATE(数量) BEGIN

IF (SELECT MIN(数量) FROM deleted ) <5

PRINT '有商品库存低于5件,请核查,速进货!' END

5、USE Sales GO

CREATE TRIGGER tri_GoodsCount ON Sell FOR INSERT AS BEGIN

DECLARE @GoodNO int,@Sellnum int

SELECT @GoodNO=商品编号, @Sellnum=数量 FROM inserted UPDATE Goods

SET 数量=数量-@Sellnum WHERE 商品编号=@GoodNO END

第十章

1、

(1)定义函数

在查询分析器中运行以下命令: USE Sales GO

CREATE FUNCTION Fn_Sell (@bt DateTime) RETURNS TABLE AS

RETURN

(SELECT Goods.商品名称,Sell.数量 FROM Goods,Sell

7

WHERE (Sell.售出时间=@bt AND Goods.商品编号=Sell.商品编号) ) (2)测试

在查询分析器中运行以下命令:

SELECT * FROM dbo.Fn_Sell('2005-6-5') 2、

(1)定义函数

在查询分析器中运行以下命令: USE Sales GO

CREATE FUNCTION Fn_DateTotal (@m Int)

RETURNS @Fn_DateTotal TABLE

(日期 DateTime PRIMARY KEY NOT NULL, 日销售额 Money NOT NULL ) AS

BEGIN

INSERT @Fn_DateTotal

SELECT Sell.售出时间 AS 日期,SUM(Sell.数量*Goods.零售价) AS 日销售额 FROM Sell,Goods

WHERE (MONTH(Sell.售出时间)=@m AND Sell.商品编号=Goods.商品编号) GROUP BY Sell.售出时间 RETURN END (2)测试

在查询分析器中运行以下命令:

SELECT * FROM dbo.Fn_DateTotal(6) 返回结果是6月份销售统计结果。 在查询分析器中运行以下命令: Declare @err Int USE Sales

BEGIN TRANSACTION

UPDATE T1 SET T1.数量= T1.数量+ GG.数量 FROM T1,GG

WHERE T1.编号= GG.编号 SELECT @err=@@error IF @err!=0

--更新失败,回滚所有操作

8

BEGIN

ROLLBACK TRANSACTION RETURN END

INSERT T1

SELECT * FROM GG

WHERE NOT (编号 IN (SELECT 编号 FROM T1)) SELECT @err=@@error IF @err!=0

--更新失败,回滚所有操作 BEGIN

ROLLBACK TRANSACTION RETURN END

COMMIT TRANSACTION 3、

在查询分析器中运行以下命令: Declare @err Int USE Sales

BEGIN TRANSACTION

UPDATE T1 SET T1.数量= T1.数量+ GG.数量 FROM T1,GG

WHERE T1.编号= GG.编号 SELECT @err=@@error IF @err!=0

--更新失败,回滚所有操作 BEGIN

ROLLBACK TRANSACTION RETURN END

INSERT T1

SELECT * FROM GG

WHERE NOT (编号 IN (SELECT 编号 FROM SELECT @err=@@error IF @err!=0

--更新失败,回滚所有操作 BEGIN

ROLLBACK TRANSACTION RETURN

9

T1)) END

COMMIT TRANSACTION

实验参考答案

实验二

1.

CREATE DATABASE StuInfo ON

PRIMARY (NAME = StuInfo _Data,, FILENAME = 'D:\\ StuInfo _Data.Mdf', SIZE =2MB,

MAXSIZE = 10MB, FILEGROWTH =1 MB) LOG ON

(NAME = StuInfo _Log ,

FILENAME = 'D:\\ StuInfo _Log.Ldf', SIZE = 1MB,

MAXSIZE =5MB,

FILEGROWTH = 1MB) GO

2.

USE StuInfo GO

--创建学生表T_Student CREATE TABLE T_Student_

( S_Number Char(8) NOT NULL

CONSTRAINT PK_ S_Number PRIMARY KEY CLUSTERED ,

S_Name Char(10) NOT NULL, Sex Char(2) NULL,

Birthday DateTime NOT NULL, ) GO

--创建课程表T_Course CREATE TABLE T_Course

( C_Number Char(4) NOT NULL

10


SQL SERVER 2000实用教程习题及实验参考答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:辩论材料真才实学比人际关系更重要

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: