SQL Server数据库服务器端编程.ppt
文本预览下载声明
重庆IT论坛 第10章 数据库服务器端编程 10.1 存储过程 10.1 存储过程 10.1 存储过程 10.1 存储过程 10.1 存储过程 10.1 存储过程 10.1 存储过程 10.1 存储过程 10.1 存储过程 10.1 存储过程 10.1 存储过程 10.1 存储过程 10.1 存储过程 10.2 触发器 10.2 触发器 10.2 触发器 10.2 触发器 10.2 触发器 10.2 触发器 10.3 游标 10.3 游标 10.3 游标 10.3 游标 10.3 游标 10.3 游标 10.3 游标 10.3 游标 * * 10.1 存储过程 10.2 触发器 10.3 游标 编程学习: 为改善系统性能,数据库管理系统允许用户将完成特定功能的SQL 语句序列组织成一个存储过程(Stored Procedure)存储在数据库中,并通过指定存储过程名及参数调用相应的存储过程。 使用存储过程有如下优点: ① 存储过程进行了预编译,并且在服务器端运行,执行速度快,客户端通过调用存储过程,可使应用程序和数据库服务器间的通信量小,降低网络负载。 ② 存储过程执行一次后,其执行规划就驻留在高速缓冲存储器中,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。 ③ 使用存储过程可以完成所有数据库操作,并可通过编程方式控制上述操作对数据库信息访问的权限,从而确保数据库的安全。 ④ 可将一些初始化的任务定义为存储过程,当系统启动时自动执行,而不必在系统启动后再进行手工操作,大大方便了用户的使用。 1.存储过程的创建 语句格式: CREATE PROCEDURE 过程名 [( 参数定义,[ 参数定义])] AS 过程体 /*描述存储过程的操作*/ 其中,参数定义如下: [ IN | OUT | INOUT ] 参数 数据类型 存储过程的定义由三部分组成:过程名、参数和过程体。存储过程名必须满足标识符的定义,在数据库内必须唯一;存储过程可以有零个或多个参数,存储过程通过这些参数与外部交换数据,输入(IN)参数,可将数据传递给存储过程,输出(OUT)参数,可从存储过程将数据传递到外部;INOUT参数表示该参数既可用做输入参数也可用做输出参数;过程体由SQL语句序列构成。 可用DBMS(或第三方软件)提供的数据库管理工具定义存储过程。 【例10.1】 定义一个存储过程查询XSCJ数据库中每个同学各门功课的成绩。 USE XSCJ Go CREATE PROCEDURE student_grade AS SELECT XS.学号,XS.姓名,KC.课程名,XS_KC.成绩 FROM XS,XS_KC,KC WHERE XS.学号=XS_KC.学号 AND XS_KC.课程号=KC.课程号 2.存储过程的执行 存储过程的执行基于如下几种情况:① 在数据库应用程序中通过嵌入式SQL语句调用,不同的开发工具提供的调用形式不一样;② 通过DBMS(或第三方软件)提供的数据库管理工具调用,调用的语法格式取决于具体的管理工具。下面的例子是基于SQL Server 2005的查询分析器调用存储过程,后面的例子中介绍了开发数据库应用程序时,如何通过嵌入式SQL语句调用存储过程。 【例10.2】 在SQL Server 2005查询分析器中执行例10.1中的存储过程。 EXECUTE student_grade GO 注:SQL Server 2005采用EXECUTE 语句,可缩写为EXEC。 3.存储过程的删除 语句格式: DROP PROCEDURE [ 数据库名. ] 存储过程名 【例10.3】 删除例10.1中创建的存储过程student_grade。 DROP PROCEDURE student_grade 4.综合应用 【例10.4】 设计一个无参存储过程,从XSCJ数据库的3个表中查询选课学生的学号、姓名、课程名、成绩、学分。 USE XSCJ /*检查是否已存在同名的存储过程,若有,删除。*/ IF EXISTS (SELECT name FROM sysobjects WHERE name = student_info AND type = P) DROP PROCEDURE student_info GO /*创建存储过程*/ CREATE PROCEDURE student_info AS SELECT a.学号,姓名,课程名,成绩,学分 FROM XS a INNER JOIN XS_KC b
显示全部