《VC#.NET数据库应用程序设计 课件第10章 员工考勤信息管理1存储过程》由会员分享,可在线阅读,更多相关《VC#.NET数据库应用程序设计 课件第10章 员工考勤信息管理1存储过程(21页珍藏版)》请在金锄头文库上搜索。
1、第10章 员工考勤信息管理1存储过程,大连理工大学 出版,存储过程,目的和要求:,掌握存储过程的创建及应用,重点和难点:,在ADO.NET中应用存储过程,案例演示:员工签到信息管理,UI设计,存储过程,什么是存储过程 为什么使用存储过程 创建存储过程 使用存储过程,存储过程引言,在使用SQL Server 2000 创建应用程序时,Transact-SQL 编程语言是应用程序和 SQL Server 数据库之间的主要编程接口。 使用 Transact-SQL 程序时,可用两种方法存储和执行程序。 可以在本地存储程序,并创建向 SQL Server 发送命令并处理结果的应用程序; 也可以将程序在
2、 SQL Server中存储为存储过程,并创建执行存储过程并处理结果的应用程序。,什么是存储过程,Transact-SQL 语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。 换句话说:在一个存储过程内,可以设计、编码和测试执行某个常用任务所需的 SQL 语句和逻辑。之后,每个需要执行该任务的应用程序只须执行此存储过程即可。(代码重用),为什么使用存储过程,1.允许模块化程序设计 2. 对于需要重复执行的代码,执行效率更高 3.减少网络流量 4.可作为安全机制使用,存储过程的处理流程,创建存储过程一般语法,CREATE PROCEDURE procedure_name WITH
3、 ENCRYPTION WITH RECOMPILE AS sql_statement 其中: WITH ENCRYPTION 对存储过程进行加密。 WITH RECOMPILE 对存储过程重新编译。 sql_statement包含在存储过程中的 SQL 语句集合。,创建一般存储过程,【例1】打开查询分析器,使用Transact-SQL语句在zdpersys数据库中创建一个名为getEmployeeCheckType的存储过程。该存储过程返回签到和签离类型。 USE zdpersys GO CREATE PROCEDURE getEmployeeCheckType AS select chec
4、ktypeid,checktype,amerce from CheckType GO,执行一般存储过程,执行存储过程的基本语法如下: EXEC procdure_name 其中procdure_name 表示存储过程名称。 【例2】使用Transact-SQL语句执行例1中创建的存储过程。 在查询分析器的查询窗口运行如下命令: USE zdpersys GO EXEC getEmployeeCheckType,创建带输入参数的存储过程,【例4】打开查询分析器,使用Transact-SQL语句在zdpersys数据库中创建一个名为“employeeExist”的存储过程。该存储过程能根据输入的员
5、工编号获取此员工是否在职的信息,若此员工在职返回“1”;若此员工不在职则返回“0”。 USE zdpersys GO CREATE procedure employeeExist EmployeeID varchar(10) as if exists ( select * from employee where employeeid=EmployeeID ) select 1 else select 0 GO,执行带输入参数的存储过程(一),使用参数名传递参数值 语法如下: EXECUTE procedure_name parameter_name=value ,n 【例6】使用参数名传递参数
6、值的方式执行例4和例5所创建的存储过程。 在查询分析器中运行如下命令: EXEC employeeExist EmployeeID=001 GO EXEC employeeCheckInAccess EmployeeID=001, CheckDate=2008-12-12 8:20:23, CheckType=1 GO,执行带输入参数的存储过程(二),按位置传递参数值 语法如下: EXEC UTE procdure_name value1, value2 【例7】用按位置传递参数值的方式执行存储过程employeeCheckInAccess。 在查询分析器中运行如下命令: EXEC emplo
7、yeeCheckInAccess 001, 2008-12-12 8:20:23, 1 GO,按位置传递参数时,虽然可以省略已 提供默认值的参数,但只能截断参数列表。,创建带输出参数的存储过程,【例8】创建存储过程getServerDateTime,该存储过程将查询数据库服务器的时间,并将时间以输出变量的方式返回给用户。 USE zdpersys GO CREATE PROCEDURE getServerDateTime ServerDateTime datetime OUT AS select ServerDateTime=getdate () GO,执行带输出参数的存储过程,【例9】执行存
8、储过程getServerDateTime。 在查询分析器中运行如下命令 USE zdpersys GO eclare ServerDateTime Datetime exec getServerDateTime ServerDateTime output select ServerDateTime GO,SqlParameter对象的使用,参数化SQL语句的使用与SqlParameter 对象 )参数数据类型 推断数据类型 显式设置数据类型 )参数方向,在ADO.NET中使用存储过程,在ADO.NET对象模型中使用存储过程与前面章节在ADO.NET对象模型中使用Transact-SQL类似,只
9、需将存储过程名传递给SqlCommand类的CommandText属性,并把SqlCommand类的CommandType属性设置为CommandType.StoredProcedur,其中CommandType是ADO.NET对象模型中的枚举型数据,解释SqlCommand类的命令字符串,其成员介绍如下表所示:,在ADO.NET中使用存储过程,1)在ADO.NET编程中使用一般存储过程 见例10。 2)在ADO.NET编程中使用带参数的存储过程 见例1112。,本章小结,本节主要是讲解了如下内容: 存储过程的创建和运用 参数化SQL语句的执行 存储过程在ADO.NET中的应用,作业,试分析该系统,完成上机测试文档内容。,