- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库测验
课堂测验
一、程序设计题
创建一个自定义函数Date_Now来显示当前日期和时间,可使用GETDATE() 和DATENAME()函数。例如当前时间是:2010-11-20 23:45:40,函数返回显示:“今天是2010年11月20日23时45分40秒星期六”。
create function Date_Now()
returns table
as
return(SELECT 今天是+DATENAME(yy,getDate())+年
+ DATENAME(mm,getDate())+月
+ DATENAME(dd,getDate())+日
+ DATENAME(hh,getDate())+时
+ DATENAME(mi,getDate())+分
+ DATENAME(ss,getDate())+秒
+ DATENAME(dw,getDate()) as 返回
)select * from Date_Now()
下面是一段程序代码,请回答问题。
CREATE FUNCTION mydefine_fun (@var1 int,@var2 int,@var3 int)
RETURNS int
AS
BEGIN
DECLARE @result int
SET @result=(@var1+@var2)*@var3
RETURN @result
END
试分析程序的功能是什么?并解释参数和返回值的作用?调用程序代码如下
select dbo.mydefine_fun(1,2,3) ,返回显示结果为 9 。
二、触发器设计题
有一数据库,包含两张表:学生(学号,姓名,专业名称,性别,课程号,成绩)
课程(课程号,课程名称,课程类型,学分)表中数据如下:
学生表
学号 姓名 专业名称 性别 课程号 成绩 10201 王停 英语 女 1 75 10201 王停 英语 女 3 87 10203 李小宏 电子商务 男 2 81 10204 张忠 生物工程 男 2 70 课程表
课程号 课程名称 课程类型 学分 1 翻译与写作 必修 2 2 高等数学 必修 2 3 政治与形势 选修 1
为表创建触发器S_insert,当向表中插入数据时,要求学号必须以“”开头,且课程号必须在表中,否则取消插入操作。当向表中插入数据时:INSERT INTO 学生 VALUES(00702,秦永,机械工程,男,2,7)
INSERT INTO 学生 VALUES(10702,秦永,机械工程,男,12,)
它们的运行结果分别是什么?
CREATE TRIGGER S_insert
ON 学生
FOR INSERT AS
DECLARE @S_no VARCHAR(4), @S_cno INT
SELECT @S_no= 学号, @S_cno=课程号
FROM INSERTED
IF (LEFT(@S_no,2)!=10)
BEGIN
ROLLBACK TRANSACTION
RAISERROR(输入的学号:%s不是级的学生,请确认后重新录入!,16,1, @S_no)END
IF(@S_cno NOT IN (SELECT CNO FROM COURSE))
BEGIN
ROLLBACK TRANSACTION
RAISERROR(输入的课程号:%d在表中不存在,请确认后重新录入!,16,1, @S_cno)END
INSERT INTO 学生 VALUES(00702,秦永,机械工程,男,2,7)
由于插入数据的学号为“02”,并不是以“”开头,所以执行S_insert触发器时,将执行“ROLLBACK TRANSACTION”语句,取消完成的工作,并执行RAISERROR语句给出错误信息。运行结果如下。输入的学号:02不是级的学生,请确认后重新录入!INSERT INTO 学生 VALUES(10702,秦永,机械工程,男,12,)
由于课程号12在表中不存在,所以执行S_insert触发器时,将执行“ROLLBACK TRANSACTION”语句,取消工作,并执行RAISERROR语句给出错误信息。运行结果: 输入的课程号:12在表中不存在,请确认后重新录入!为表创建DELETE触发器S_delete,当一次删除的记录大于一行或者删除记录的课程时,取消删除操作。代码:CREATE TRIGGER S_delete
ON 学生
FOR DELETE AS
DECLARE @rowcount int
SELECT @rowcount=@@ROWCOUNT --@@ROWCOUNT返回受上一语句影响的行数
IF @rowcount1
BEGIN
Rollback tr
原创力文档


文档评论(0)