- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库数据存储过程
执行存储过程为第一条语句,可以省略exec。 1.4存储过程的参数 1.参数定义 输入参数将用户的数据值传递到存储过程后函数, 输出参数将用数据值或游标变量传递到用户,每个存储过程向用户返回一个整数代码,如果没有显性设置返回代码的值,则返回为0。 简单的语法格式如下: CREATE PROC[EDURE] proc_name @parameter_name data_type[=default][,…n] OUTPUT AS SQL_satament OUTPUT用于定义输出参数时使用,输出参数必须位于所有的输入参数之后;输出参数中保存的是存储过程执行完成时的当前值。 2.输入参数 【例1】中查询了整个表的信息,如果想查询指定某个学生的信息,则该存储过程更加通用化、灵活性,需要引入参数。 【例3】定义一个输入参数的存储过程。在数据库中创建一个名为Proc_GetAllStudent的存储过程,在表(student)查询某个学号的学生信息。 ① 判断该存储过程是否存在,若存在,则删除; ② 创建该存储过程; ③ 执行该存储过程。 ?if exists(select * from sysobjects where name=Proc_GetAllStudent and type=p) drop proc Proc_GetAllStudent ? CREATE PROCEDURE GetAllStudents @x char(10) AS select sno,sname,sage,ssex,sdept from student where sno=@x ? exec GetAllStudents200211122 执行时可以用多种方式。 在执行存储过程的语句中,直接给出参数的值。多个参数时候,次序按照语句中参数的次序给出。 exec GetAllStudents 200211122 使用“参数名=参数值”的方式,参数名必须和存储过程定义的参数名一致。 exec GetAllStudents @x=200211122 定义一个参数,附值,再执行 declare @y char(10) set @y=11202 exec GetAllStudents @y 3.输出参数 通过定义输出参数,可以从存储过程中返回一个或多个值。必须在定义和执行时指定关键字output。 create proc sum @x int,@y int,@result int output as set @result=@x+@y ~~~~~~~~~~~~~~~~~~~~~~~~ declare @z int exec sum3,5,@z output select @z sum 【例4】定义一个输入参数和两个输出参数,显示某个学生的学号和最高成绩 if exists(select * from sysobjects where name=maxmarke) drop proc maxmarke create proc maxmarke @x char(10),@m char(10) output,@n int output as select @m=sno,@n=max(grade) from sc group by sno having sno=@x declare @i char(10),@j int exec maxmarke 200211121, @i output,@j output select @i 学号,@j 最高成绩 4.返回值 返回值是整型值,如果执行成功,返回为0;否则返回为-1到-99之间的随机数,也可以使用return语句指定存储过程的返回值。 【例5】定义一个输入参数和返回值。在本书的数据库中创建一个名为FindStudent的存储过程,查询指定的学生,找到用return语句返回1,否则返回0。 说明:用到的表为Student,学生的信息。 输入参数:学生名称,类型为varchar(20)。 返回值:整数。 create proc FindStudent @x varchar(20) as if exists(select * from student where sname=@x) return 1 else return 0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ declare @result int exec @result=FindStudent 王超 if @result =1 print 找到此人 else prin
您可能关注的文档
- 探寻高效课堂之道——谈导学案的编写和使用.ppt
- 接触前准备与电话约访.ppt
- 接触网施工监理细则.doc
- 控规编制中城市设计附加图则成果规范研究《上海市控制性详细规划附加图则成果规范》解析.docx
- 挑战杯”大学生创业计划大赛答辩——福图科技.ppt
- 推销实务 认识推销.ppt
- 描写环境污染的句段.docx
- 推荐我对谁负责谁对我负责 课件.ppt
- 提升泵站值班记录表定稿.doc
- 提升来访成交率的技巧与方法.pptx
- 新的一年工作展望.docx
- 医生年终个人工作的述职报告(3篇).docx
- 2023年消防设施操作员之消防设备中级技能考前冲刺练习题附答案详解.docx
- 2022-2023年环境影响评价工程师之环评技术导则与标准通关练习题包括详细解答.docx
- 2023年中级注册安全工程师之安全生产管理考前冲刺检测卷和答案.docx
- 2023年中级银行从业资格之中级银行管理考前冲刺测试卷提供答案解析.docx
- 2023年公共营养师之二级营养师通关模拟考试试卷附带答案.docx
- 证券分析师之发布证券研究报告业务考前冲刺模拟题库.docx
- 2022-2023年二级建造师之二建建设工程法规及相关知识综合提升测试卷附答案.docx
- 2023年二级建造师之二建机电工程实务通关模拟考试试卷提供答案解析.docx
文档评论(0)