- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(1) 创建不带输入参数的存储过程p_insert1。 CREATE PROCEDURE p_insert1 AS BEGIN INSERT INTO student(sno,sname,ssex,classno) VALUES(200903101123,吴刚,男 SELECT sno,sname,ssex,classno FROM student END 执行该存储过程: EXEC p_insert1 运行结果如图1-16所示。 图1-16 执行p_insert1存储过程 (2) 创建带输入参数的存储过程p_insert2。 CREATE PROCEDURE p_insert2 @sno char(12),@sname char (10),@ssex char (2),@classno char (8) AS BEGIN INSERT INTO student(sno,sname,ssex,classno) VALUES(@sno,@sname,@ssex,@classno) SELECT sno,sname,ssex,classno FROM student END 执行该存储过程: EXEC p_insert2 200903101124,王晓丽,女 执行结果如图1-17所示。 图1-17 执行p_insert2存储过程 通过比较上面两个存储过程可以看出,对存储过程p_insert1,用户执行只能插入固定的一条学生信息。如果要多次插入,只能创建多个存储过程。而对存储过程p_insert2,用户可以在执行存储过程时通过输入参数插入多条数据。带输入参数的存储过程可以提供更灵活的应用。 【例1-29】 创建存储过程,要求根据用户输入的课程号修改相应课程的授课学时。 CREATE PROCEDURE p_update @cno int,@modulus float AS BEGIN UPDATE course SET hours=hours*@modulus WHERE cno=@cno END 存储过程p_update有两个输入参数:@cno用来获取用户想要修改的课程号;@modulus用来获取用户要修改的课程学时的系数。 执行存储过程,将课程编号为03105的课程的授课学时增加20%: EXEC p_update 03105,1.2 为了显示存储过程执行前后course表中数据的变化,在执行存储过程前查看course表中的数据,执行完后再查看course表中的数据,以验证存储过程执行是否正确。执行结果如图1-18所示。 图1-18 执行p_update存储过程 【例1-30】 创建存储过程,根据学生的学号显示学生的最高分、最低分和平均成绩。用户执行存储过程,若学生的平均成绩大于85分,且最低分大于75分,则显示“该学生成绩优秀”。 分析:因为要求根据学生学号显示学生成绩的相关信息,所以需要为存储过程设定一个输入参数,用于传递学生的学号。而且因为要求创建好的存储过程在执行时要将学生的最低分和平均成绩返回到执行语句处进行处理,所以要在该存储过程中创建多个输出参数。 在查询编辑器窗口中输入如下语句: CREATE PROCEDURE p_outpara @sno char(12),@max int OUTPUT,@min int OUTPUT,@avg int OUTPUT AS SELECT @max=MAX(result),@min=MIN(result),@avg=AVG(result) FROM student JOIN sc ON student.sno=sc.sno WHERE sc.sno=@sno GROUP BY sc.sno 创建好存储过程后,执行该存储过程,执行语句如下所示: DECLARE @maxscore int,@minscore int,@avgscore int EXEC p_outpara 200903101105,@maxscore OUTPUT,@minscore OUTPUT,@avgscore OUTPUT IF (@minscore75) AND (@avgscore=85) PRINT 该学生成绩优秀! 执行后若学生达到优秀的条件,就会显示相应语句,否则什么也不做。 执行结果如图1-19所示。 图1-19 判断某学生成绩 1.6.2 数据库安全管理 存储过程的
文档评论(0)