SQL迴圈語句的幾種方式

2021-08-06 02:13:45 字數 1986 閱讀 7341

--第一

declare @ordernum varchar(255)

create table #ttablename(id int identity(1,1),orders varchar(255))

declare @n int,@rows int

insert #ttablename(orders) select ordernum from pe_orders where orderid<50

--select @rows=count(1) from pe_orders

select @rows =@@rowcount 

set @n=1 

while @n<=@rows

begin

select @ordernum=ordernum from pe_orders where ordernum=(select orders from #ttablename where id=@n)

print (@ordernum)

select @n=@n+1

enddrop table #ttablename

--第二

declare @ordern varchar(50)--臨時變數,用來儲存游標值

declare y_curr cursor for --申明游標 為ordernum

select ordernum from pe_orders where orderid<50

open y_curr --開啟游標

fetch next from y_curr into @ordern ----開始迴圈游標變數

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

begin

print (@ordern)

update pe_orders set functionary+@ordern where ordernum=@ordern --運算元據庫

fetch next from y_curr into @ordern --開始迴圈游標變數

endclose y_curr--關閉游標

deallocate y_curr --釋放游標

--第三

select ordernum,username,moneytotal into #t from pe_orders po 

declare @n int,@error int

--set @n=1 

set @error=0

begin tran --申明事務

declare @ordern varchar(50),@usern varchar(50) --臨時變數,用來儲存游標值

declare y_curr cursor for  --申明游標 為ordernum,username

select ordernum,username from pe_orders where orderid<50

open y_curr

fetch next from y_curr into @ordern,@usern

while @@fetch_status = 0

begin

select isnull(sum(moneytotal),0),ordernum from #t where username=@usern

-- set @n=@n+1

set @error=@error+@@error--記錄每次執行sql後 是否正確  0正確

fetch next from y_curr into @ordern,@usern

endif @error=0

begin

commit tran --提交

endelse

begin

rollback tran --回滾

endclose y_curr

deallocate y_curr

drop table #t

幾種SQL語句的寫法

1.一張表中有使用者資訊表user user id,nickname 另外一張表聯絡人表contact user id,friend id 現在要找出聯絡人的資訊 1 selectu1.nicknameasmyselft,u2.nicknameasfriendfromcontact cinnerjo...

SQL查詢的幾種方式

1 左連線 left join 或者 left outer join 2 左連線 table a表資料全部顯示,table b根據條件匹配table a 匹配上顯示,否則顯示null 3 select from table a 4 select from table b 5 select from ...

優化SQL的幾種方式

優化的目的 1 盡量保證索引能正確使用。2 盡量避免全域性搜尋。3 索引不是越多越好。方式 1 對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引 2 應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全...