游標操作的六步驟:
◆在每次在建立游標的時候都問問自己,用什麼別的方法可以避免使用游標,那麼你就步如設計的正規了.
1.宣告
2.開啟
3.應用/操作
4.關閉.
5.釋放
宣告游標的基本語法如下:
declare cursor
for
案例
1: myschool
ifexists(
select
*from sysobjectswhere
name
='cursc')
drop
proc cursc
gocreate
procedure curscas
declare
@question varchar
(210),
--我們必須宣告變數來存放得到的記錄
@a varchar
(50),
@b varchar
(50),
@c varchar
(50),
@d varchar
(50),
@answer varchar
(50),
@num int
declare mycursor cursor
--宣告我們的游標
global --
全域性游標的範圍還有乙個是區域性
(local)
forselect question,optiona,optionb,optionc,optiond,answerfrom question --
對應的sql
語句後面開啟游標就是開啟
set @num=1--
設定標量表示游標的移動
open mycursor --
開啟我們的游標這實際執行了
for從句的主體查詢
,但我們仍然沒有將資料
--放在合適的位置進行合適的處理
,因此我們需要處理一組事情.
--1.獲取第一條理路或者
fetch
--2.根據需要
,迴圈剩餘記錄
fetch next from mycursor into @question,@a,@b,@c,@d,@answer
--首先生成第一條
fetch(
提取)--
該命令說明了希望提取一條特定的的記錄
,得到的記錄由變數接受
print'第
'+cast
(@numas
varchar)+'
個問題:'
+' 答案a
是'+@a+
' 答案b是
'+@b+
' 答案c是
'+@c+
' 答案d是
'+@d++
' 正確答案是
'+@answer
--
對得到的記錄進行對應操作
(第一次
) --
如果忘了再這裡進行操作那麼會少操作一行資料
while
(@@fetch_status
=0)--@@fetch_status
全域性變數
,每次提取一行
,該變數就更新一次--
並告訴我們提取工作進展到了哪一步
.他可能值為以下項
--□ 0:提取成功
,一切進展順利
||語句成功
--□ -1:
提取失敗或此行不在結果集中
,超出了游標中的最後一行
(或在第一行之前
) ||fetch語句失敗或行不在結果集中
--□ -2:
提取失敗
,被提取的行不存在
,因為記錄丟失
(不是迴圈到了末尾
,而是因為在游標開啟時已經刪除了該記錄
) ||提取的行不存在
begin
select @num=@num+1
fetch next from mycursor into @question,@a,@b,@c,@d,@answer
--
上面的fetch
進行操作一行資料
那麼迴圈也要進行操作記住有次
fetch和2
次操作語句塊
print'第
'+cast
(@numas
varchar)+'
個問題:'
+' 答案a
是'+@a+
' 答案b是
'+@b+
' 答案c是
'+@c+
' 答案d是
'+@d++
' 正確答案是
'+@answer
end
close mycursor --
關閉游標
deallocate mycursor --
釋放游標
基本操作上面案例已經很清楚了
游標 (學習筆記)
游標的定義 游標 cursor 是處理資料的一種方法,為了檢視或者處理結果集中的資料,游標提供了在結果集中一次一行或者多行前進或向後瀏覽資料的能力。使用游標 游標的使用主要分為兩大類 一 第一種使用方法 宣告游標 游標在使用之前必須先宣告,可用declare cursor語句宣告游標,其一般格式為 ...
oracle 游標 學習
1,什麼是游標?從表中檢索出結果集,從中每次指向一條記錄進行互動的機制。這些應用程式需要一種機制來一次處理一行或連續的幾行。而游標是對提供這一機制的結果集的擴充套件。游標是通過游標庫來實現的。游標庫是常常作為資料庫系統或資料訪問 api 的一部分而得以實現的軟體,用來管理從資料來源返回的資料的屬性 ...
拿雞蛋python 扔雞蛋問題python編寫
分析,假設x是最優解的最多次數。則第乙個雞蛋第一次從第x層扔 不管碎沒碎,還有x 1次嘗試機會 如果碎了,則第二個雞蛋在1 x 1層中線性搜尋,最多x 1次 如果沒碎,則第乙個雞蛋第二次從x x 1 層扔 現在還剩x 2次嘗試機會 如果這次碎了,則第二個雞蛋在x 1 x x 1 1層中線性搜尋,最多...