Topic: Vartotojo kintamieji

Tarkim turiu sudetinga UPDATA, kuriame:
1) Sudetingu budu apskaiciuoju tam tikra reiksme (naudojamasi keliomis lentelemis)
2) ta reiksme naudoju skirtingiems veiksmams atlikti atnaujinant lenteles

Tai va idomu ar galima ta sudetinga reiksme toje pacioje uzklausoje priskirti vartotojo kintamajam, ir veliau ja naudot ?

ta prasme pas mane yra mazdaug taip:

Update A, B, C
SET
A.a = (A.b+A.C* + ....) * A.a,
B.a = (A.b+A.C* + ....) * A.b/B.c
.....


Na ta prasme ar galiu as (A.b+A.C* + ....) uzsirasyti kaip kintamaji kurioje nors vietoje tos pacios uzklausos ir ji naudot paskui...
Nelabai gaudausi su tais @ ;)

Re: Vartotojo kintamieji

Tai darai taip:

SET @kintamasis := (SELECT A+B FROM lentele);

o paskui jeigu reikia:

UPDATE antra_lentele SET stulpelis = @kintamasis;

Re: Vartotojo kintamieji

nu panasu pavizdi as buvau susirades, bet man reikes ta atlikti su daug eiluciu... taigi vienoje uzklausoje...
Ten siaip uzklausa dar sudetingesne.. visokie joinai ir t.t.,  o ta reiksme apskaiciuojama atliekant labai daug operaciju, tai manau neapsimoka visu operaciju kartoti uzklausoje 10 kartu,    tos pacios reiksmes prireikia net  atnaujinant kitus tos pacios lenteles stulpelius

Man reiktu kazko tokio
Update A, B, C
SET
A.a = ($a := (A.b+A.C* + ....) ) * A.a,
B.a = $a* A.b/B.c

Bet ar taip galima ?

Re: Vartotojo kintamieji

Na yra tokia griežta taisyklė, kad negalima UPDATE sakinyje redaguoti tuos stulpelius, kurie yra naudojami to pačio UPDATE sakinio sub-užklausoje (subquery).

Arba paprasčiau kalbant negali vienu metu atlikinėti ir UPDATE ir SELECT. Jeigu tavo atveju taip nesigauna tada gali viską realizuoti.