Ⅰ sql server 新建查询创建游标后,为什么再次新建查询打开游标,提示名为 'x' 的游标不存在
游标的作用域最高为连接级:在同一个连接上,可以共用游标,连接断开,游标清除。
如果建立游标时指定【local】关键字,则在定义它的代码段(或过程/函数/触发器)执行完后释放。
在SSMS中,每一个查询窗口,都是独立的连接,所以不能共用同一个游标。
Ⅱ 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 SERVER 2008 打开游标不存在
是的,不能去掉declare@curcursor这是定以一个游标,跟定义变量一样,他是要与表和函数区分的
Ⅳ 执行存储过程显示 游标不存在
将
close kecheng_cousor
deallocate kechang_cousor
移到循环外
create procere add_record @sno char(9)
as
declare @total_num int,@cno char(4)
SET NOCOUNT on;
select @total_num= COUNT(*) from Student where Sno=@sno
if @total_num=0
begin
print'该学生不存在!'
return
end
else
begin
declare kecheng_cursor CURSOR FOR select cno from course
open kecheng_cousor
fetch next from kecheng_cursor into @cno
while @@FETCH_STATUS=0
begin
select @total_num=COUNT(*) from SC where Sno=@sno and Cno=@cno
if @total_num>0
begin
FETCH NEXT FROM kecheng_cousor into @cno
continue
end
else
begin
insert into SC(Sno,cno,grade)values(@sno,@cno,100*RAND())
fetch next from kecheng_cousor into @cno
end
end
close kecheng_cousor
deallocate kechang_cousor
end
Ⅳ SQL创建了标量函数但显示不存在,如何解决
使用修改部分打开的自定义函数,说明函数创建成功。
至于加红色的波浪线,可以不用理会,工具显示的问题,不是错误。
关闭后再打开就好了,就当做微软工具的小小bug啦
Ⅵ 存储过程,打开游标报错,表或视图不存在。 但是视图是存在的,直接将定义游标的sql拿出来是可以执行的。
调用的时候是用这个存储过程的owner吗,如果不是,在存储过程头部加上
AUTHID CURRENT_USER 。
如果是动态sql,需要显示的授权
grant select on xxx to xxx ;
Ⅶ SQL提示游标不存在
use LtsDatabase
GO
declare te cursor for
select * from 网站职员表 for read only
Ⅷ 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
具有指定名称的游标不存在。
具有指定名称的游标变量并不存在,或者即使存在这样一个游标变量,但并没有给它分配游标。
Ⅸ SQLSerVer不存在怎么解决