‘壹’ sql 游标查询问题
--这样写不州庆纳就可以了么?
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
‘贰’ sql 游标
又是相同的问题,晕倒呀,你怎么不网络备散简一下,就直接发问了?
--创建存储过程
create
procere
nstable
as
begin
--id
declare
@公司id
int
--公掘配司名称
declare
@公司名称
nvarchar(200)
--定义游标
declare
abc
cursor
for
select
min(公司id)
as
公司id,公司名称
from
表
group
by
公司名称
--打开游标,并取值
open
fetch
abc
fetch
next
from
abc
into
@公司id,@公司名仿裤称
--进入循环
while
@@fetch_status=0
begin
update
表
set
公司id=@公司名称id
where
公司名称=@公司名称
--取下一条
fetch
next
from
abc
into
@公司id,@公司名称
end
--关闭游标
close
abc
deallocate
abc
eng
go
运行时,只要用:execute
nstable
就会达到你要的效果
‘叁’ Sql中的游标是干嘛的
游标(cursor)是结果集的逻辑扩展,可以看做指向结果集的一个指针,通过使用游标,应用程序可以逐行访问并处理结果集。
ResultSet对象用于接收查询结果,next()方法用于判断结果集是否为空,相当于指针,指向结果集下一个数据。
(3)sql查看游标扩展阅读:
游标的生命周期包含有五个阶段:声明游标、打开游标、读取游标数据、关闭游标、释放游标。
1、声明游标语法
DECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]
2、打开游标语法
open [ Global ] cursor_name | cursor_variable_name
3、读取游标数据语法
Fetch[ [Next|prior|Frist|Last|Absoute n|Relative n ]from ][Global] cursor_name[into @variable_name[,....]]
4、关闭游标语法
close [ Global ] cursor_name | cursor_variable_name
5、释放游标语法
deallocate cursor_name
‘肆’ SQL游标怎么用
具体用法如下:
1、打开sqlservermanagementstudio,选中要操作的数据库;
2、新建一个查询;
3、声明一个游标,以及一些需要用到的临时变量;
4、使用游标,首先打开游标,并将游标下移一行;
5、循环取出数据,并进行相应的逻辑处理,其中的变量保存在@id和@name中;
6、每次循环的结束,要把游标下移;
7、要关闭游标,并释放内存。
注意事项:游标名称不能以@开头。
‘伍’ sql游标查询(急)
declare @专业代码名称 varchar(50)
declare cur_test cursor for select 专业名称 from dbo.数据总表 where 条件 group by 专业名称
open cur_test
fetch cur_test into @专业代码名称
while(@@fetch_status = 0)
begin
--这里是你自己要做的操作内容。比如查询变量值
select @专业代码名称
fetch next from cur_test into @专业代码名称
end
close cur_test
deallocate cur_test供xuanhao2016参考。如有帮助你采纳。可到IT实验室,天天件测试网论坛上进一步交流。
‘陆’ SQL中如何确定游标到了最后以及游标的作用是什么
@@fetch_status=0 是游标提取数据失败,即数据提取结束到最后了。
游标主要作用是,操作SQL查询结果集。
以下为典型游标的应用:
createproccursorTest
@_idint=0,
@_namevarchar(50)=''
as--创建游标
declare@cursorcursor--设定游标欲操作的数据集
set@cursor=cursorfor
select_id,_namefromusers
open@cursor--打开游标
fetchnextfrom@cursorinto@_id,@_name--移动游标指向到第一条数据,提取第一条数据存放在变量中
while(@@fetch_status=0)begin--如果上一次操作成功则继续循环
print@_name--操作提出的数据
fetchnextfrom@cursorinto@_id,@_name--继续提下一行
end
close@cursor--关闭游标
deallocate@cursor--删除游标
‘柒’ sql server中如何判断游标是否存在
--测试
DECLARE @SNAME VARCHAR(20)
DECLARE DD CURSOR FOR SELECT SNAME FROM S
OPEN DD
--楼上说的对.你要的是判断游标是否存在
select * from MASTER.dbo.syscursors where cursor_name='DD'
--以下操作为判断游标是否存在的同时检测游标状态。
SELECT (CASE WHEN CURSOR_STATUS('global','DD')=1 THEN '游标的结果集至少有一行'
WHEN CURSOR_STATUS('global','DD')=0 THEN '游标的结果集为空'
WHEN CURSOR_STATUS('global','DD')=-1 THEN '游标被关闭'
WHEN CURSOR_STATUS('global','DD')=-2 THEN '游标不适用'
WHEN CURSOR_STATUS('global','DD')=-3 THEN '游标不存在' END) AS RESULT
/*返回结果:
1
游标的结果集至少有一行。
对于不区分的游标和键集游标,结果集至少有一行。
对于动态游标,结果集可以有零行、一行或多行。
分配给该变量的游标已打开。
对于不区分的游标和键集游标,结果集至少有一行。
对于动态游标,结果集可以有零行、一行或多行。
0
游标的结果集为空。*
分配给该变量的游标已经打开,然而结果集肯定为空。*
-1
游标被关闭。
分配给该变量的游标被关闭。
-2
不适用。
可以是:
先前调用的过程并没有将游标分配给 OUTPUT 变量。
先前调用的过程为 OUTPUT 变量分配了游标,然而在过程结束时,游标处于关闭状态。因此,游标被释放,并且没有返回调用过程。
没有将游标分配给已声明的游标变量。
-3
具有指定名称的游标不存在。
具有指定名称的游标变量并不存在,或者即使存在这样一个游标变量,但并没有给它分配游标。
‘捌’ SQL中自己建的游标和索引在哪里能看到
楼主 游标你是看不物神亮到的 游标都包含在对象里瞎吵面 比如 存储过程
索引可以看 select * from sys.indexes
name就是索引名称 通过id就可以找到表名 然后直接在表下面能找罩宽索引
生成创建索引脚本即可
‘玖’ SQL Server中查看哪些游标未释放
查看没有关闭庆缺的誉滑辩游标让悔 SELECTsession_id ,cursor_id ,name ,creation_time ,is_openFROMsys.dm_exec_cursors(0)WHEREis_open = 1;