第10章 数据库服务器端编程

第10章 数据库服务器端编程

ID:42949948

大小:542.00 KB

页数:28页

时间:2019-09-26

第10章  数据库服务器端编程_第1页
第10章  数据库服务器端编程_第2页
第10章  数据库服务器端编程_第3页
第10章  数据库服务器端编程_第4页
第10章  数据库服务器端编程_第5页
资源描述:

《第10章 数据库服务器端编程》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第10章数据库服务器端编程10.1存储过程10.2触发器10.3游标10.1存储过程为改善系统性能,数据库管理系统允许用户将完成特定功能的SQL语句序列组织成一个存储过程(StoredProcedure)存储在数据库中,并通过指定存储过程名及参数调用相应的存储过程。使用存储过程有如下优点:①存储过程进行了预编译,并且在服务器端运行,执行速度快,客户端通过调用存储过程,可使应用程序和数据库服务器间的通信量小,降低网络负载。②存储过程执行一次后,其执行规划就驻留在高速缓冲存储器中,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。③使用存储过程可以完

2、成所有数据库操作,并可通过编程方式控制上述操作对数据库信息访问的权限,从而确保数据库的安全。④可将一些初始化的任务定义为存储过程,当系统启动时自动执行,而不必在系统启动后再进行手工操作,大大方便了用户的使用。1.存储过程的创建语句格式:CREATEPROCEDURE过程名[(<参数定义>,[<参数定义>])]AS<过程体>/*描述存储过程的操作*/其中,参数定义如下:[IN

3、OUT

4、INOUT]<参数><数据类型>10.1存储过程存储过程的定义由三部分组成:过程名、参数和过程体。存储过程名必须满足标识符的定义,在数据库内必须唯一;存储过程可以有零个或多个参数,存储过程通过这些参数

5、与外部交换数据,输入(IN)参数,可将数据传递给存储过程,输出(OUT)参数,可从存储过程将数据传递到外部;INOUT参数表示该参数既可用做输入参数也可用做输出参数;过程体由SQL语句序列构成。可用DBMS(或第三方软件)提供的数据库管理工具定义存储过程。【例10.1】定义一个存储过程查询XSCJ数据库中每个同学各门功课的成绩。USEXSCJGoCREATEPROCEDUREstudent_gradeASSELECTXS.学号,XS.姓名,KC.课程名,XS_KC.成绩FROMXS,XS_KC,KCWHEREXS.学号=XS_KC.学号ANDXS_KC.课程号=KC.课程号10.

6、1存储过程2.存储过程的执行存储过程的执行基于如下几种情况:①在数据库应用程序中通过嵌入式SQL语句调用,不同的开发工具提供的调用形式不一样;②通过DBMS(或第三方软件)提供的数据库管理工具调用,调用的语法格式取决于具体的管理工具。下面的例子是基于SQLServer2005的查询分析器调用存储过程,后面的例子中介绍了开发数据库应用程序时,如何通过嵌入式SQL语句调用存储过程。【例10.2】在SQLServer2005查询分析器中执行例10.1中的存储过程。EXECUTEstudent_gradeGO注:SQLServer2005采用EXECUTE语句,可缩写为EXEC。3.存储

7、过程的删除语句格式:DROPPROCEDURE[数据库名.]<存储过程名>【例10.3】删除例10.1中创建的存储过程student_grade。DROPPROCEDUREstudent_grade10.1存储过程4.综合应用【例10.4】设计一个无参存储过程,从XSCJ数据库的3个表中查询选课学生的学号、姓名、课程名、成绩、学分。USEXSCJ/*检查是否已存在同名的存储过程,若有,删除。*/IFEXISTS(SELECTnameFROMsysobjectsWHEREname='student_info'ANDtype='P')DROPPROCEDUREstudent_info

8、GO/*创建存储过程*/CREATEPROCEDUREstudent_infoASSELECTa.学号,姓名,课程名,成绩,学分FROMXSaINNERJOINXS_KCbONa.学号=b.学号INNERJOINKCtONb.课程号=t.课程号GO10.1存储过程在SQLServer2005查询分析器中,student_info存储过程可以通过以下方法执行:EXECUTEstudent_info或EXECstudent_info如果该过程是批处理中的第一条语句,则可使用:student_info/*直接输入过程名*/【例10.5】从XSCJ数据库的3个表中查询某人指定课程的成绩和

9、学分,该存储过程要求实参为精确匹配的值。USEXSCJIFEXISTS(SELECTnameFROMsysobjectsWHEREname='student_info1'ANDtype='P')DROPPROCEDUREstudent_info1GOCREATEPROCEDUREstudent_info1@namechar(8),@cnamechar(16)ASSELECTa.学号,姓名,课程名,成绩,学分FROMXSaINNERJOINXS_KCbONa.学号=b.学号INNE

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。