第07章数据库编程基础-副本详解.ppt
文本预览下载声明
7.4.2 动态定义功能 一般格式是: EXECUTE IMMEDIATE SQLStatement 其中SQLStatement是构成合法SQL语句的字符串(一般应该是变量)。 7.4.3 动态操作功能 这种格式的动态SQL语句实际包含了两条语句,第一条是准备SQL的语句: PREPARE SQLSA FROM SQLStatement 第二条是执行SQLSA中准备好的SQL语句: EXECUTE SQLSA USING {ParameterList} 其中: SQLSA是类似于SQLCA的系统对象变量 SQLStatement含有合法SQL语句的字符串 ParameterList传递参数的主变量表 7.4.4 动态查询功能动态查询功能 一般格式包括: 说明动态游标的语句 DECLARE Cursor DYNAMIC CURSOR FOR SQLSA 为动态游标准备SQL语句 PREPARE SQLSA FROM SQLStatement 打开动态游标的语句 OPEN DYNAMIC Cursor {USING ParameterList} 从游标读记录的语句 FETCH Cursor INTO HostVariableList 关闭游标的语句 CLOSE Cursor 本章小结 游标主要用于SQL的宿主使用,内容涉及定义游标、打开游标、从游标读记录、控制循环处理游标、关闭游标和释放游标等内容。 存储过程是存储在数据库服务器中的程序,在数据库服务器端执行,可以有效均衡系统负载、减少网络传输量、提高系统效率,另外还可以提高系统的安全性能。 触发器也是存储在数据库中的程序,与存储过程不同的是触发器不需要用户去执行,它是在特定条件发生时自动触发执行的。 DML触发器定义在表上,当表上发生数据操作时特定的程序将会自动触发执行完成相应的操作。 思考题 什么是游标?为什么需要游标? 使用游标包括哪些步骤? @@FETCH_STATUS是怎样的变量?使用该变量如何控制循环从游标中读记录? 在程序中如何将程序变量用于SQL语句?如何将SQL处理或查询的结果存储到程序变量中? 利用游标进行删除和更新操作是什么意思? 什么是存储过程? 哪些命令不能在存储过程中执行? 思考题 如何理解存储过程的OUTPUT参数? 存储过程是否可以起到用户函数的作用?存储过程如何返回值? 如何理解存储过程可以提高安全性的问题? 理解7.2.4中存储过程应用实例,掌握存储过程的各种使用方法。 简述在数据库设计阶段如何设计存储过程。 执行存储过程 @return_status:用于存放存储过程返回的状态。这个变量在执行存储过程前必须说明过。 procedure_name:要执行或调用的存储过程名。 @parameter:存储过程中定义的参数。 value :传递给存储过程的参数值。如果参数名称没有指定,参数值必须以在存储过程中定义的顺序提供。如果在存储过程中定义了默认值,则可以不必指定参数。 @variable :用来存储参数或返回参数的变量。 OUTPUT:说明是输出参数,用于从存储过程返回值。使用游标变量作为参数时必须使用该关键字。 EXECUTE [ @return_status = ] [schema_name.]procedure_name [ @parameter = ] { value | @variable [ OUTPUT ] } [ ,...n ] 7.2.3 存储过程的修改和删除 修改存储过程 ALTER PROCEDURE,它的格式与CREATE PROCEDURE命令的格式类似。 删除存储过程 DROP PROCEDURE [schema_name.]procedure_name 存储过程应用举例 使用简单过程(不使用任何参数) 使用带有参数的简单过程 使用带有参数和返回值的简单过程 使用带有通配符参数的简单过程 使用 OUTPUT 参数 使用 cursor 数据类型的参数 1. 使用简单过程(不使用任何参数) 例7-5. 查询所有职工信息(姓名、仓库号、工资、所在城市) CREATE PROCEDURE uspGetAllEmp AS SELECT 姓名,仓库.仓库号,工资,城市 AS 所在城市 FROM 仓储.仓库 JOIN 基础.职工 ON 仓库.仓库号=职工.仓库号 执行存储过程: EXECUTE uspGetAllEmp 2. 使用带有参数的简单过程 例7-6. 返回指定城市的职工信息 CREATE PROCEDURE uspGetEmp1 @city char(10) AS SELECT * FROM 基
显示全部