Tworzenie pętli WHILE w t-sql


Pętla WHILE jest to element pozwalający na wielokrotne wykonanie jakiegoś fragmentu kodu do czasu spełnienia określonego warunku.

WHILE Boolean expression code

Boolean expression jest warunkiem typu TRUE lub FALSE, code jest kodem który będzie wykonywany dopóki Boolean expression nie zwórci TRUE. Przykład działania:
declare @i int
set @i = 0
while @i < 10
	begin
	  set @i += 1
	  print 'Powtorzenie nr: ' + cast(@i as char)
	end



Przykład ukazuje podstawowy sposób działania pętli czyli, pętla będzie wykonywana póki @i jest mniejsze od 10. W/w przykład będzie działał w MS SQL SERVER 2008 i nowszych gdyż jest użyte wyrażenie set @i+=1 w starszych wersjach @i=@i+1.

declare @i int
create table test(id int,lp int)
insert into test (id) select 1
insert into test (id) select 2

WHILE exists(select top 1 1 from test where lp is null)
	begin
	select @i= ID from test where lp is null order by id 
	update test set lp = 0 where id = @i
		
	end
	
select * from test
drop table test	

Działaniem pętli WHILE możemy również sterować za pomocą polcenia BREAK i CONTINUE. Pierwsze polecenie powoduje przerwanie działania pętli drugie jej kontynuacje. Poleceń możemy użyć w połączeniu z IF lub ELSE.

declare @i int
set @i=1
create table test (lp int)

while @i <5
begin

if @i=3 
break

insert into test select @i
set @i+=1
end

select * from test
drop table test


declare @i int
set @i=1
create table test (lp int)

while @i <5
begin

if @i>6 
Continue

insert into test select @i
set @i+=1
end

select * from test
drop table test



Jeszcze innym sposobem sterowanie przebiegiem pętli jest użycie polecenia GOTO. Celem użycia tego polecenia po GOTO należy podać etykietę, samą etykietę wskazujemy nazwa:

declare @i int
set @i=1
create table test (lp int)

while @i <5
begin

if @i=3 
goto koniec

insert into test select @i
set @i+=1
end

koniec:
select * from test
drop table test





powrót















SQL-KURSY.pl poleca:

Książki

Copyright 2010-2011mariuszhk@op.pl

obob ob

Valid HTML 4.01 Transitional

Strona internetowa wykorzystuje pliki cookie zapisywane w pamięci przeglądarki internetowej.

OK