分享
 
 
 

sybase基础知识(4)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有