
--这样写不就可以了么?
SET NOCOUNT ON
DECLARE @i int
DECLARE @Description VARCHAR(100)
set @i=1
DECLARE authors_cursor cursor
for
select [Description] from [a_p]
open authors_cursor
fetch next from authors_cursor INTO @Description --列值必须是唯一,或选个唯一列作为参数
while @@fetch_status=0
begin
select ''+ convert(varchar,@i) as [序号],[Description],[quantity]
from [a_p] WHERE [Description]=@Description
set @i=@i+1
fetch next from authors_cursor
end
close authors_cursor
deallocate authors_cursor
游标作用:通常情况下,关系数据库中的 *** 作总是对整个记录集产生影响,例如使用SELECT语句检索数据表时,将得到所有满足该语句where子句中条件的记录,而在实际应用过程中,经常需要每次处理一条或者一部分记录。在这种情况下,需要使用游标在服务器内部处理结果集合,他可以有助于识别一个数据集合内部指定的记录,从而可以有选择的按记录执行 *** 作。
SQL中的select语句,其查询的结果,是返回满足某个条件的属性列的集合,如果我们要逐项使用返回的数据,比如说,想要把c哦11ege表的所有学院名字取出,逐项存放到某窗口的某的列表项中,仅仅用SQL所提供的增、删、改、查 *** 作,是实现不了的,这就需要用到数据库游标,使用数据库游标来实现逐项选取select语句返回的属性列
不如你把读取游标的语句改成这样试试?
open rs;
while(done!=1) do
fetch from rs into url,auid;
select url,auid;
end while;
close rs;
1为何使用游标:
使用游标(cursor)的一个主要的原因就是把集合 *** 作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQLserver内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。
2如何使用游标:
一般地,使用游标都遵循下列的常规步骤:
(1)声明游标。把游标与T-SQL语句的结果集联系起来。(2)打开游标。(3)使用游标 *** 作数据。(4)关闭游标。
3下面是用法
DECLAREcursor1cursor/声明游标,默认为FORWARD_ONLY游标/
FORSELECTFROMbooks
OPENcursor1/打开游标/
FETCHNEXTfromcursor1/读取第1行数据/
WHILE@@FETCH_STATUS=0/用WHILE循环控制游标活动/
BEGIN
FETCHNEXTfromcursor1/在循环体内将读取其余行数据/
END
CLOSEcursor1/关闭游标/
DEALLOCATEcursor1
众所周知,数据库就是数据的仓库,是由许多数据组成的。
但有些时候我们只关心数据库中的某些数据,就使用特定的SQL语言获得此部分数据的信息,此部分数据就是所谓的视图。
换句话说,视图就是数据库中我们希望查看的那部分数据,视图可能是一个数据表,也可能是若干个数据表中的特定数据。
就好像在一个仓库中,堆放了很多东西,而我们只关心的某些东西的某种关联,就是我们相对这个仓库的“视图”。
官方定义是:视图是一个虚拟表,其内容由一个查询所定义。
存储过程是集中存储在数据库管理系统中预先定义好并编译的好的事务,一般有SQL语句和过程控制语言构成。比如根据不同的查询条件,可以判断结果,执行某些查询语言或者数据库 *** 作语言。就好像高级语言的procedure或function一样。
游标是一种用于从多条检索结果中进行 *** 作的手段。通常我们会检索出多条纪录,然后我们通过游标定位每一条纪录,然后对该纪录进行 *** 作。
以上就是关于sql 游标查询问题全部的内容,包括:sql 游标查询问题、plsql里游标有什么作用,查询为什么用游标而不直接用select语句、关于数据库游标的概念(数据库游标的作用)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)