『壹』 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;