文档详情

数据库系统简介chp08.ppt

发布:2017-07-26约5.02千字共191页下载文档
文本预览下载声明
;第八章 数据库编程;8.1 嵌入式SQL;8.1 嵌入式SQL;8.1.1 嵌入式SQL的处理过程;嵌入式SQL的处理过程(续) ;嵌入式SQL的处理过程(续) ;8.1 嵌入式SQL;8.1.2 嵌入式SQL语句与主语言之间的通信;嵌入式SQL语句与主语言之间的通信(续) ;一、SQL通信区;SQL通信区;二、主变量 ;主变量(续) ;主变量(续) ;主变量(续) ;主变量(续) ;主变量(续) ;三、游标(cursor);四、建立和关闭数据库连接;;五、程序实例;程序实例(续);程序实例(续);程序实例(续);8.1 嵌入式SQL;游 标; 游标(续);;SQL Server游标具有下面的处理过程: (1)声明游标,定义其特性,如游标中的行是否可以被更新。 (2) 执行Transact-SQL语句生成游标即打开游标。 (3)在游标中检索要查看的行。从游标中检索一行称为读取游标。向前或向后执行取数据操作来检索行的行为称为滚动。 (4)关闭游标。 (5)删除游标;1. SQL-92游标定义格式;;参数说明: SCROLL:表示可以使用相应的关键字指定游标的移动位置,否则游标的移动只能是NEXT READ ONLY:禁止通过该游标进行更新 UPDATE:定义游标中可更新的列 ;SCROLL的取值;例 声明一个游标,用于访问Sales数据库中的goods表的信息。;语法格式如下: DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY] FOR select_statement [ FOR UPDATE [ OF column_name [ ,...n ] ] ];例为customer表定义一个全局滚动动态游标,用于访问顾客的编号、姓名、地址、电话信息。;使用游标;2. 读取游标;表9-14 @@fetch_status变量;OPEN cur_customer FETCH NEXT FROM cur_customer WHILE @@fetch_status = 0 BEGIN FETCH NEXT FROM cur_customer END;CLOSE的语法格式为: CLOSE 游标名 例如,关闭游标cur_customer的命令: CLOSE cur_customer 游标cur_customer在关闭后,就不再和原来的查询结果集相联系,仍可用OPEN语句打开继续读取数据行。;DEALLOCATE命令删除游标与游标名或游标变量之间的联系,并且释放游标占用的所有系统资源。其语法格式为: DEALLOCATE 游标名 一旦某个游标被删除,在重新打开之前,必需再次对其进行声明。;游标的应用;删除游标数据的语法格式为: DELETE FROM table_name WHERE CURRENT OF 游标名 ;例 定义游标cur_customer,通过cur_customer更新customer表 中的customer_name和linkman_name列。;若要删除customer表的一行数据,则使用以下命令替换例9-37中的UPDATE语句,就可以删除通过游标读入的一行数据。 DELETE FROM customer WHERE CURRENT OF cur_customer; DECLARE xs CURSOR FOR SELECT * from 学生表 for update of 年龄 open xs fetch absulute 4 from xs update 学生表 set 年龄=年龄-1 where current of xs close xs Deallocate xs;2. 使用游标变量;;;CREATE PROCEDURE PK_SalaryAdd AS declare @O_ID nvarchar(20),@A_Salary float declare mycursor cursor for select O_ID,A_Salary from AddSalary open mycursor fetch next from mycursor into @O_ID,@A_Salary while(@@fetch_status = 0) begin Update OriginSalary set O
显示全部
相似文档