Pēdējās nedēļās tā vairāk sanācis nodarboties ar ātrdarbības lietām. Šeit neliels sausais atlikums un daži padomi, kas var noderēt dzīvē.
piektdiena, 2014. gada 6. jūnijs
trešdiena, 2014. gada 4. jūnijs
Parametra deklarēšana cikla iekšienē
Šāds T-SQL vaicājums (orģinālā mainīgie kursora iekšienē):
declare @i int = 0
while @i < 5
begin
declare @a int;
declare @b int;
Set @a = @i;
if @i <= 2
Set @b = @a;
select @i i, @a a, @b b;
Set @i+=1;
end
Kādas būs vērtības @b parametram tad, kad @i > 2? Es biju iedomājies, ka Null, bet nekā, lai arī parametra deklarēšana notiek cikla iekšienē, tas joprojām būs 2 (Null tikai pirms pirmreizējas vērtības piešķiršanas).
Starp citu, arī šāds vaicājums nestrādās, lai uz pirmo acu uzmetienu liekas visai korekts (nevar deklarēt divās vietās viena bach ietvaros):
declare @x int = -1;
if(@x>0)
begin
Declare @j int = 5
end
else
begin
Declare @j int = -5
end
Lai nu kā, parametrus rekomendē deklarēt procedūras/vaicājuma sākumā. Šis ir viens no iemesliem kāpēc tā.
declare @i int = 0
while @i < 5
begin
declare @a int;
declare @b int;
Set @a = @i;
if @i <= 2
Set @b = @a;
select @i i, @a a, @b b;
Set @i+=1;
end
Kādas būs vērtības @b parametram tad, kad @i > 2? Es biju iedomājies, ka Null, bet nekā, lai arī parametra deklarēšana notiek cikla iekšienē, tas joprojām būs 2 (Null tikai pirms pirmreizējas vērtības piešķiršanas).
Starp citu, arī šāds vaicājums nestrādās, lai uz pirmo acu uzmetienu liekas visai korekts (nevar deklarēt divās vietās viena bach ietvaros):
declare @x int = -1;
if(@x>0)
begin
Declare @j int = 5
end
else
begin
Declare @j int = -5
end
Lai nu kā, parametrus rekomendē deklarēt procedūras/vaicājuma sākumā. Šis ir viens no iemesliem kāpēc tā.
Abonēt:
Ziņas (Atom)