SQL带参数存储过程.ppt

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
输入参数的默认值3-1 带参数的存储过程确实比较方便,调用者可根据试卷的难易度,随时修改每次考试的及格线 讲解要点: C语言中,调用带参数的函数时,我们需要传递实际参数值给形式参数(形参)。 例如:调用求两个数之和的函数int sum(int a,int b ),求5和8之和, 则调用形式为:c=sum(5,8) ,返回值将赋值变量c 。 存储过程中的参数与此非常类似,存储过程中的参数分两种: 输入参数:可以在调用时向存储过程传递参数,即向存储过程传入值,类似C语言中按值传递; 输出参数:和C语言中的函数一样,如果希望返回值,则可以使用输出参数,输出参数后有OUTPUT标记, 存储过程执行后,将把返回值存放在输出参数中,可供其它T-SQL语句读取访问。 根据试卷的难度,我们希望笔试和机试的及格线应该是随时变化的,而不是固定的60分。 讲解关键代码 讲解要点: 上述带参数的存储过程确实比较方便,调用者可以随时更改每次考试的及格线。但如果考试的难易程度合适,则调用者还是必须如此调用: EXEC proc_stu 60,60 这些显得比较麻烦,能不能在调用时,存储过程的参数变为可选呢?例如,如果调用形式为: EXEC proc_stu 55 --表示笔试及格线55分,机试及格线默认为60分 EXEC proc_stu ---表示笔试和机试及格线都默认为标准的60分 提问学员:怎么办呢? 告诉学员:完全没问题。存储过程的输入参数允许您设置默认值 强调: 1.默认值放在参数的数据类型后面,而不是放在参数变量的后面。 2.为了调用的方便,推荐将默认参数放置在参数列表的最后 强调: 1.默认值放在参数的数据类型后面,而不是放在参数变量的后面。 2.为了调用的方便,推荐将默认参数放置在参数列表的最后 强调: 1.调用时也必须跟随关键字OUTPUT,否则SQL Server将视为输入参数。 讲解要点: (1)执行速度快。 存储过程创建是就已经通过语法检查和性能优化,在执行时无需每次编译。 存储在数据库服务器,性能高。 (2)允许模块化设计。 只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改 。 (3)提高系统安全性。 可将存储过程作为用户存取数据的管道。可以限制用户对数据表的存取权限,建立特定的存储过程供用户使用,完成对数据的访问。 存储过程的定义文本可以被加密,使用户不能查看其内容。 (4)减少网络流量: 一个需要数百行Transact-SQL代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。 创建带参数的存储过程 存储过程的参数分两种: 输入参数 输出参数 int sum (int a, int b) { int s; s=a+b; return s; } c=sum(5, 8) 传入参数值 输入参数: 用于向存储过程传入值,类似C语言的按值传递; 输出参数: 用于在调用存储过程后, 返回结果,类似C语言的 按引用传递; 返回结果 带输入参数的存储过程 问题: 修改上例:由于每次考试的难易程度不一样,每次 笔试和机试的及格线可能随时变化(不再是60分),这导致考试的评判结果也相应变化。 分析: 在述存储过程添加2个输入参数: @writtenPass 笔试及格线 @labPass 机试及格线 带输入参数的存储过程 CREATE PROCEDURE proc_stu @writtenPass int, @labPass int AS print -------------------------------------------------- print 参加本次考试没有通过的学员: SELECT stuName,stuInfo.stuNo,writtenExam, labExam FROM stuInfo INNER JOIN stuMarks ON stuInfo.stuNo=stuMarks.stuNo WHERE writtenExam@writtenPass OR labExam@labPass GO 输入参数:笔试及格线 输入参数:机试及格线 查询没有

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档