FIREBIRD tárolt eljárásban FOR SELECT
2022-09-16T04:00:14+02:00
2022-09-17T09:09:36+02:00
2022-09-20T15:55:29+02:00
ponicsan
Valaki segiten mert nem értem és a szegényes angol nyelvtudáson ehhez már kevés.
Van egy tárolt eljárásom ahol először egy for select -el válogatom le a rekordokat, majd az így kapott eredényhalmaon végigmanve elvégzem a szükségesszámításokat.
Eddig jó is lenne, de a for select elsö körben egyes rekordokra NULL-t ad vissza.
kb így néz ki:

for select ..... into :A select .... from where .... = :A
Van erre  valami varázszlat, vagy marad az if ( A is not null) then.....
ugyanis így már jónak tűnik mert azelső iterációnál hibázik (eddig)
A suspend nem megoldás,  mert azmegszakítja a végrehajtást.
Mutasd a teljes hozzászólást!

  • Az első selectben kellene ilyesmi:

    for select mezo into :A from tabla where mezo is not null
    Mutasd a teljes hozzászólást!
  • A for select az ok, a probléma a második select-nél van, ami mindig CSAK EGY rekordot ad vissza, de a select ... into varlist nél van az érdekesség, egyes változók amiket visszaad NULL-ok,
    Olyan mintha az idö kevés lenne neki a feldolgozásra.....
    aztán mégegyszer nekifut... Nem értem, és elképzelésem sincs.
    Mutasd a teljes hozzászólást!
  • Talán csak a gondolatolvasás nem megy ma reggel, de néha mint azt mondanád, hogy a külső select-től kapsz NULL-value-t az 'A' változóba, máskor meg azt sugallod, hogy valami más a gondod.

    Azt például nagyon nem értem, hol van itt 'varlist'.

    Kérlek próbálj meg konkrétabb programrészt beidézni, és jobban leírni, hogy hol a gond.
    Mutasd a teljes hozzászólást!
  • Ja értem, a cikluson belüli SELECT-ben lévő INTO-ra gondolsz, hogy egyes sorokban egyes bind-változókba NULL-value kerül.
    Biztos, hogy ez hiba?
    Mutasd a teljes hozzászólást!
  • Bocs, de egész éjjel ezzel molyoltam és máralig látok ki a fejebből....
    A probléma mégegyszer.
    Van egy tárolteljárás amiben egy for select -el lekérem az időszakba eső mmérőket.
    ( itt még lehet több is, mivel több mérő lehet aktuális az időszakban, de időben nem eshetnek egybe.
      azaz ha 2022.01.01 - 2022.12.31 ig kéree, és pl 2022.02.26 -án mérőt cseréltek az időszakban több mérő is van szélsőséges eseben akár naponta is cserélhetnék bár semmi értelme  )
    Ezt kérem le for select-el, amin aztán végig tudok menni.
    mivel mindem mérőnek van ID-je (tulajdon képpen elég volna ezt lekérni, de tartamaz pár kiegészítő nnformációt is, de ez a lekérdezés szempontából lényegtelen) később kiértékeléskor mérőnként tudom kiértékelni és  halmozni az adatokat.
    for select .......
      BEGIN
        select ......
            és itt van amit nem értek 
      END
    A belső select a lekérdezésből adódóan minden képpen csak egy rekordot tartalmazhat.
    és itt a gebasz, mert vannak null mezők, amik nincsenek ... (lehet hogy idétlenül hangzik, de ez van)
    Próbaképp kínomba betettem igy if is not null-t és láss csodát, megjavult.
    Megértem hogy nem érted, én is szenvedek vele már egyideje....
    Ha külön-külün kérem le a lekérdezéseket mindem ok.

    Vakuljon meg a lovam ha értem. Már azt sem tudom mit keresek....

    A for select is ok ha simán selectcént kérem le, megvannak az érintett rekordok.
    A selectet is ha külön lekérem middíg csakegy rekordja van, és nincs benne NULL.

    Hülyén fogok meghalni....
    Mutasd a teljes hozzászólást!
  • OK. Megvan! Egy kis alvás sokat segített
    Felcserélten két paramétert......
    Mutasd a teljes hozzászólást!
abcd