SQL Server游標 延遲執行簡介

2022-01-16 08:10:02 字數 1207 閱讀 2266

在專案測試中,我們可能會使用批量生成資料來測試程式的效能。

這裡講乙個我遇到的問題,由於我們批量生成資料時基本上是瞬間完成,所以getdate()函式獲得的時間基本上也是一樣的,而我們又要求生成每條資料的時間不同,那麼如何來解決這個問題?

網上搜尋了很多,這裡我是使用游標+waitfor來處理的:

首先來講下游標,因為個人也是才使用游標,而且也沒有深入研究。

那麼游標是用來幹什麼的呢?一般我們使用游標是用來對查詢出來的結果集進行處理的(修改,新增...)。

t-sql中的游標定義在msdn中如下:

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 ] ] ]

[;]游標的簡單定義:declare 游標名 cursor for 結果集

開啟游標:open 游標名

向下讀取游標:fetch next from 游標名 into 接收從結果集中讀取到的資料的變數

關閉游標:close 游標名

釋放游標:deallocate 游標名

這裡因為要使用游標對結果集進行遍歷,那麼我們必須要來介紹乙個全域性變數@@fetch_status

@@fetch_status 返回被 fetch 語句執行的最後游標的狀態,而不是任何當前被連線開啟的游標的狀態。

返回值 描述 0 fetch 語句成功。 -1 fetch 語句失敗或此行不在結果集中。 -2 被提取的行不存在

這裡只是介紹游標一些簡單的用法。

下面我們再來介紹一下如何在資料庫中使用延遲

waitfor delay '00:00:01'--一秒後執行print語句

print '我是延遲執行的'

waitfor delay '00:00:00.010'--10毫秒後執行print語句

print '我是延遲執行'

waitfor time '10:00:00'--十點執行print語句

print '我是延遲執行'

mysql游標很慢 Sqlserver 游標 慢

net專案中有個模組做統計功能,原先方法速度很慢,所以需要改進,統計結果如下圖 下圖接上圖後面 原先的處理方式是,這些資料分別涉及到四五張表,前台從資料庫中查詢出需要的資料集,然後分別遍歷這些資料集拼接html字串顯示在介面上。優化思考 net專案中有個模組做統計功能,原先方法速度很慢,所以需要改進...

SQL Server 游標使用

游標概念 資料庫操作中我們常常會遇到這樣情況,即從某一結果集中逐一地讀取一條記錄。那麼如何解決這種問題呢?游標為我們提供了一種極為優秀的解決方案。游標 cursor 是系統為使用者開設的乙個資料緩衝區,存放sql語句的執行結果。每個游標區都有乙個名字。使用者可以用sql語句逐一從游標中獲取記錄,並賦...

sqlserver游標使用

create procedure pk test as 宣告2個變數 declare o id nvarchar 20 declare a salary float 宣告乙個游標mycursor,select語句中引數的個數必須要和從游標取出的變數名相同 declare mycursor curso...