Prvi red mi je jasan ali drugi red kada pozivamo isti proc u kome se nalazimo po meni se cini da se treci red nikada nece izvrsiti ali oce e kada ??? Nikako ne mogu da ukapiram sta se u ova 3 reda desava.Prvi razumem ali nije mi jasno kada se 3 red izvrsava ako se u 2poziva isti proc - meni ovo lici na beskonacnu petlju ???
e da i nikako mi nije jasno kako mi dodeljujemo vrednost @OutWorking kada nigde nema na primer : @OutWorkinng = 2 + 1 ....
ALTER PROC [dbo].[spTriangular]
@ValueIn int,
@ValueOut int OUTPUT
AS
DECLARE @InWorking int
DECLARE @OutWorking int
IF @ValueIn != 1
BEGIN
[b]SELECT @InWorking = @ValueIn - 1 -- 1 red
EXEC spTriangular @InWorking, @OutWorking OUTPUT -- 2 red
SELECT @ValueOut = @ValueIn + @OutWorking[/b] --3 red
END
ELSE
BEGIN
SELECT @ValueOut = 1
END
RETURN
ovaj PROC radi sledece za broj 5 kada izracuna dodeli tu vrednost @ValueOut i u com prozoru @ValueOut ispisuje rezutat.
ako je pri pozivanju PROC-a prosledjena vrednost 5 ovaj proc racuna sledece.
@ValueOut = 5 + 4 + 3 + 2 + 1
Kada u If petlji koristimo BEGIN i END postizemo da se kodovi izmedju izvrsavaju kao jedan blok . E mene bas ovo muci jel citajuci knjige o SQL-u nisam naso dovoljno dobro objasnje , tj primeri su mi malo nejasni pa nisam dobro ovaj deo razumeo. Jel mi sa BEGIN i END postizemo to da posto u 2 redu pozivamo isti PROC prvo se zavrse ostali iskazi(redovi) pa tek se poziva ponovo isti PROC ...
ako je tako zar ne bi trebalo da prvo ide 1 red , 3red , 2red...
Pogledajte sliku ...
[Ovu poruku je menjao unisoft dana 12.01.2010. u 18:38 GMT+1]