首页 > 数据库

最近sql数据库的使用总结

时间:2009-05-20 11:51:14  作者:烨  我要投稿
Linux初探欢迎您的投稿,投放方法请点击这里查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
Sql学习......

Sql学习

•1、 带游标的存储过程:

存储过程的定义规范,我们可以参照sql的联机帮助,可以详细的得到。

CREATE PROCEDURE copyData AS

declare @qid int,

@orgAddr varchar(25),

@destaddr varchar(25),

@answers varchar(256),

@receivedate datetime,

@serviceID varchar(10)

DECLARE MutiInsert_Cursor CURSOR FOR

select substring(DestAddr,14,17) as QID,OrgAddr,DestAddr,SM_Content,RecvTime,ServiceID from tbl_SMReceived

where Reserve2 is NULL

OPEN MutiInsert_Cursor

FETCH NEXT FROM MutiInsert_Cursor

into @qid,@orgAddr,@destaddr,@answers,@receivedate,@serviceID

WHILE @@FETCH_STATUS = 0

BEGIN

insert into tbl_Answers (QID,OrgAddr,DestAddr,Anwsers,ReceiveDate,ServiceID)

values(@qid,@orgAddr,@destaddr,',' @answers ',',@receivedate,@serviceID)

FETCH NEXT FROM MutiInsert_Cursor

into @qid,@orgAddr,@destaddr,@answers,@receivedate,@serviceID

END

CLOSE MutiInsert_Cursor

DEALLOCATE MutiInsert_Cursor

GO

上述存储过程用了游标,在使用存储过程时可能会出现查出多条记录插入一个表中的情况,当出现这种情况的时候sql会报错,错误大致意思就是不能同时插入处理多行。这个时候游标的作用就凸现出来啦。

游标顾名思义就像一个可以游动的指针,它指向结果的"一条"记录,这个一条很重要,这样就可以有了解决多行处理的方法。

定义方法:DECLARE MutiInsert_Cursor CURSOR FOR ........

For后的内容就是一张表,可以使select语句查询出来的表,也可以是其他。

在看后面的代码,你会发现,这跟asp读取数据库的recordset很相似,应该就是一个东西吧,游标嘛。

定义好游标后,先打开它,这时就可以读出它这个时候指向的记录内容。读取方法为:

FETCH NEXT FROM MutiInsert_Cursor

into @qid,@orgAddr,@destaddr,@answers,@receivedate,@serviceID

into后面的东西就是存储过程一开始定义的变量。

对于内容遍历,可以做一个循环(如下:):

WHILE @@FETCH_STATUS = 0

BEGIN

insert into tbl_Answers (QID,OrgAddr,DestAddr,Anwsers,ReceiveDate,ServiceID)

values(@qid,@orgAddr,@destaddr,',' @answers ',',@receivedate,@serviceID)

如果您需转载 最近sql数据库的使用总结,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目热门