1.while迴圈
格式示例如下:
declare
@iint
set@i=1
while
@i<
30begin
insert
into test (userid)
values(@i
)set@i=
@i+1end
2.游標迴圈
格式示例如下:
declare
@a1varchar(10
),@a2varchar(10
),@a3int
declare youcurname cursor
forselect a1,a2,a3 from youtablename
open youcurname
fetch
next
from youcurname into
@a1,
@a2,
@a3while @@fetch_status
<>-1
begin
--您要執行的操作寫在這裡
fetch
next
from youcurname into
@a1,
@a2,
@a3end
close youcurname
deallocate youcurname
游標迴圈中主要做的事情有以下幾點
1、把記錄集傳給游標;
2、開啟游標
3、開始迴圈
4、從游標中取值
5、檢查那一行被返回
6、處理
7、關閉迴圈
8、關閉游標
在儲存過程中使用游標時,當游標中執行的**報錯時,會導致儲存過程直接報錯,進一步導致**不會執行到銷毀游標處。所以在儲存過程中使用游標時,為了更加安全的執行,應該先判斷游標是否存在,這個sqlserver資料庫已內建乙個函式幫助我們確認游標的狀態。詳細如下:
檢查游標的狀態:
cursor_status(
'global',''
)=1then
'游標的結果集至少有一行'
cursor_status(
'global',''
)=0then
'游標的結果集為空'
cursor_status(
'global',''
)=-1
then
'游標被關閉'
cursor_status(
'global',''
)=-2
then
'游標不適用'
cursor_status(
'global',''
)=-3
then
'游標不存在'
--第二個引數為游標名
可用如下語句驗證
declare groupcur cursor
forselect1;
open groupcur ;
close groupcur ;
deallocate groupcur ;
select cursor_status(
'global'
,'groupcur'
);
Sqlserver儲存過程中經常使用的迴圈
1 游標的使用 sql server游標的使用 declare date2 datetime declare tabb cursor cursor for select date,weeknum,studytime from tabb where date date order by date op...
SQLServer 儲存過程中各種判斷是否為空
1.判斷是否存在這樣的記錄 if not exists 和 if exists 相對應 例 使用者是否存在 if not exists if exists select 1 from user nolock where username abcd begin print 使用者存在 end else...
sqlserver中在儲存過程中寫事務
由於對資料的操作經常需要併發,所以在儲存過程中使用事務是非常必要的,我經常這樣處理 if exists select from sys.objects where name sp drop proc sp gocreate procedure sp 引數列表.out bit 0 output 輸出引...