儲存過程(一)游標

2021-09-02 09:33:17 字數 1467 閱讀 6397

1. 概念

游標(cursor)它使戶可逐行訪問由sql server返回的結果集。

使用游標(cursor)的乙個主要的原因就是把集合操作轉換成單個記錄處理方式。用sql語言從資料庫中檢索資料後,結果放在記憶體的一塊區域中,且結果往往是乙個含有多個記錄的集合。游標機制允許使用者在sql server內逐行地訪問這些記錄,按照使用者自己的意願來顯示和處理這些記錄。

2. 游標的優點

從游標定義可以得到游標的如下優點,這些優點使游標在實際應用中發揮了重要作用:

1)允許程式對由查詢語句select返回的行集合中的每一行執行相同或不同的操作,而不是對整個行集合執行同乙個操作。

2)提供對基於游標位置的表中的行進行刪除和更新的能力。

3)游標實際上作為面向集合的資料庫管理系統(rdbms)和面向行的程式設計之間的橋梁,使這兩種處理方式通過游標溝通起來。

3.游標的使用

講了這個多游標的優點,現在我們就親自來揭開游標的神秘的面紗。

使用游標的順序: 聲名游標、開啟游標、讀取資料、關閉游標、刪除游標

create procedure pk_test

as--宣告個變數

declare @o_id nvarchar(20)

declare @a_salary float

--宣告乙個游標mycursor,

declare mycursor cursor for select o_id,a_salary from addsalary

--開啟游標

open mycursor

--從游標裡取出資料(select語句中引數的個數必須要和從游標取出的變數名相同)賦值到我們剛才宣告的個變數中

fetch next from mycursor into @o_id,@a_salary

/*//判斷游標的狀態

//0 fetch語句成功

//-1 fetch語句失敗或此行不在結果集中

//-2被提取的行不存在*/

--迴圈 一次次讀取 游標,得到@o_id,@a_salary的值

while (@@fetch_status=0)

--開始讀執

begin

--將@o_id,@a_salary 當做乙個已知量,隨便使用。

--顯示出我們每次用游標取出的值

print '游標成功取出一條資料'

print @o_id

print @a_salary

--用游標去取下一條記錄

fetch next from mycursor into @o_id,@a_salary

end--關閉游標

close mycursor

--撤銷游標

deallocate mycursor

go

oracle儲存過程,游標

oracle儲存過程,游標 2010 07 07 13 01 create or replace procedure p tb task log is 功能 插入任務到任務日誌表 v task start date date v task end date date v sql code numbe...

儲存過程與游標

有以下4種 1.使用show procedure status命令檢視儲存過程的定義 2.檢視某個資料庫中所有儲存過程名 select name from mysql.proc where db yourdb and type procedure 使用mysql命令 show create proc...

mysql 游標 儲存過程

1.首先需要注意的是mysql中游標必須要建立在儲存過程中 2.直接上sql 查詢當天資料 select in flow out flow from water meter data where 1 1 and date sys read time curdate 1 order by in flo...