|
|
sybase基础知识(4) |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
sybase基础知识 |
[ 作者:陈苏文 转贴自:http://www.chinaunix.net 点击数:9526 文章录入:sdccf ] |
●定义游标 ●打开游标 ●从游标中操作数据 ●关闭游标 下面讲述的是后端(服务器)游标。 (1)定义游标 在使用游标之前必须声明它。声明指定定义游标结果集的查询。通过使用for update或for read only关键词将游标显式定义成可更新的或只读的。 Declare cursor语法为: For select_statement [for{read only|update[of colum_name_list]}] 举例: declare pubs_crsr cursor for select pub_name,city,state from publishers for update of city,state (2)打开游标 open的语法为: open 游标名 在声明游标后,必须打开它以便用fetch,update,delete读取、修改、删除行。在打开一个游标后,它将被放在游标结果集的首行前,必须用fetch语句访问该首行。 (3)从游标中读取数据 在声明并打开一个游标后,可用fetch命令从游标结果集中获取数据行。 Fetch的语法为: Fetch 游标名[into 变量列表] 举例:fetch pub_crsr into @name,@city,@state SQL Server在每次读取后返回一个状态值。可用@@sqlstatus访问该值,下表给出了可能的@@sqlstatus值及其意义。 值意 义 0Fetch语句成功 1Fetch语句导致一错误 2结果集没有更多的数据,当前位置位于结果集最后一行,而客户对该游标仍发出Fetch语句时。 若游标是可更新的,可用update和delete语句来更新和删除行。 删除游标当前行的语法为: delete[from]表名 where current of 游标名 举例:delete from authors where current of authors_crsr 当游标删除一行后,SQL Server将游标置于被删除行的前一行上。 更新游标当前行的语法为: update 表名 set column_name1={expression1|NULL|(select_statement)} [,column_name2={expression2|NULL|(select_statement)} [……] where current of 游标名 举例: update publishers set city=”Pasadena”,state=”CA” where current of pubs_crsr (4)关闭游标 当结束一个游标结果集时,可用close关闭。该语法为: close 游标名 关闭游标并不改变其定义,可用open再次打开。若想放弃游标,必须使用deallocate释放它,deallocater的语法为: deallocater cursor 游标名 deallocater语句通知SQL Server释放Declare语句使用的共享内存,不再允许另一进程在其上执行Open操作。 六、事务——维持数据一致性和恢复 1.事务的定义 事务提供了一种将T-SQL语句分组的方法,从而使它们能够被当成一个单元来处理:组中所有语句或都执行,或都不执行。 事务是确保一个或多个SQL语句的集合不被当成单一工作单元处理的机制,SQL Server自动将所有数据修改命令,包括单步改变请求,作为事务处理,缺省时,每个insert、update、delete语句被当成一个事务处理。 2.事务的作用 事务使SQL Server能保证: ·一致性——同时发生的查询或改变请求彼此不冲突,用户不能对正处于改变过程的数据进行查看或操作。 ·恢复——在系统失效时,数据库的恢复是完全的和自动的。 3.使用事务 a. 开始和确认事务 begin transaction和commit transaction可将任意数目的SQL语句封装起来,这两名的简单语法为: begin transaction commit transaction b. 回退事务 在commit transaction命令提交前任何时候可取消或回退事务,该命令的简单语法为: rollback transaction 4.检查事务状态 全局变量@@transtate记录了事务当前的状态。在执行一个语句后SQL Server通过记录所有事务变化来确定返回何种状态。 @@transtate可包含下列值: 值意 义 0事务进行中:一个显式或隐式事务有效;上一语句执行成功 1事务完成:事务完成并提交其变化 2语句异常中止:上一语句异常终止;对事务无影响 3事务异常中止:事务异常中止并回退所有变化 举例:在事务中,可在一个语句(如insert)后使用@@transtate确定该语句成功或失败对事务的影响。commit transaction Begin transaction Insert into publishers(pub_id)values(‘9999’) (1 row affected) select @@transtate ………………… 0 commit transaction select @@transtate ………………… 0 (1 row affected)
| | 
|
|
相关文章:相关软件: |
|