Ⅰ 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不存在怎麼解決