Delphi > FireDAC

Číslovanie parametrov v SQL.Text pri opakovanom výskyte

(1/4) > >>

Stanislav Hruška:
Ak sa parametre neopakujú, tak predpokladám, že to je podľa ich výskytu v SQL.Tex. Príklad
--- Kód: ---FVstQuery.SQL.Text := 'SELECT F.IDFOCS, F.CONSCRIPTIONUMBER, F.ISACTIVE,'+
  ' F.SHORTTITLE, F.CITY, F.STREET, F.CHAIRMANNAME'+
' FROM FOCS F'+
' WHERE F.DELETED = :DELETED AND F.YEARFOUNDED <= :YEARS';
--- Konec kódu ---
DELETED = 0 A YEARS = 1.
Opakovaný výskyt parametra. Priklad
--- Kód: ---FVstQuery.SQL.Text := 'SELECT F.IDFOCS, F.CONSCRIPTIONUMBER, F.ISACTIVE, :YEARS'+
  ' F.SHORTTITLE, F.CITY, F.STREET, F.CHAIRMANNAME'+
' FROM FOCS F'+
' WHERE F.DELETED = :DELETED AND F.YEARFOUNDED <= :YEARS';
--- Konec kódu ---
Tu to ako bude
YEARS = 0 a DELETED = 1, alebo musím použiť
Params[0] (prvý YEARS) - Params[1] (DELETED)- Params[2] (druhý YEARS)

pf1957:
Zase neco carujes :-O

Parametry jsou bud pozicni nebo pojmenovane. Pozicni jsou ? a nelze je sdilet tj. kazdy ? musi mit v seznamu parametru vlastni hodnotu, pojmenovane maji prefix : a odkazujeme se na ne jmenem, ne pozici. A uvedeny zpusob parametrizace nelze v jednom SQL prikazu michat.

pf1957:

--- Citace: Stanislav Hruška  01-09-2020, 12:15:55 ---[0] (prvý YEARS) - Params[1] (DELETED)- Params[2] (druhý YEARS)

--- Konce citace ---
Nemuzes mit dva stejne pojmenovane parametry!!

Stanislav Hruška:


--- Citace ---Zase neco carujes :-O
--- Konce citace ---
Vôbec nečarujem. Takéto situácie mám bežne. Viď nižšie
--- Citace: pf1957  01-09-2020, 14:06:42 ---
--- Citace: Stanislav Hruška  01-09-2020, 12:15:55 ---
* (prvý YEARS) - Params[1] (DELETED)- Params[2] (druhý YEARS)
* [/l][/l]
--- Konce citace ---
Nemuzes mit dva stejne pojmenovane parametry!!

--- Konce citace ---
Ja to bežne používam tak ako to je v príklade a doteraz som s tým nemal problém. MS Access to neumožňuje.
Sú dva základné prípady:

* Tak ako to je uvedené v príklade
* Ak mám nejaký subSelect viac krát použitý v hlavnom Query. U mňa to nie je nič mimoriadne. Ako by som to mal riešiť, aby sa mi parametre neopakovali?To miešanie prístupu nerobím. Podvedome som cítil, že buď jedno alebo druhé. Ja mám/používam vždy :myParameter. O pozičných parametroch som akosi nepočul.
Ja to beriem tak, že sa pri parsovaní SQL.Text-u vytvorí zoznam z :myParameterA až :myParameterX. Kedže to je zoznam, tak k jednotlivým položkám môžem pristupovať pomocou indexov.
Dôvod otázky:
Teraz mám všade prístup podľa mena. Ovšem, ak robím spracovanie v cykle pomocou dávky, tak sa odporúča pristupovať pomocou indexov (devArt). Hľadal som to aj FireDAC, ale žiadnu takú poznámku som nenašiel. Viem, že to platí všeobecne. Pri prístupe podľa mena tam je vždy práca navyše a pri vysokom počte položiek sa to prejaví. Ja mám rádove maximálne 1 - 2 tisícky záznamov, čo nie je veľa. Ale nechcem mať vedome v programe žiadne brzdy o ktorých viem.[/list]

vandrovnik:

--- Citace: Stanislav Hruška  01-09-2020, 16:04:16 ---Teraz mám všade prístup podľa mena. Ovšem, ak robím spracovanie v cykle pomocou dávky, tak sa odporúča pristupovať pomocou indexov (devArt). Hľadal som to aj FireDAC, ale žiadnu takú poznámku som nenašiel. Viem, že to platí všeobecne. Pri prístupe podľa mena tam je vždy práca navyše a pri vysokom počte položiek sa to prejaví. Ja mám rádove maximálne 1 - 2 tisícky záznamov, čo nie je veľa. Ale nechcem mať vedome v programe žiadne brzdy o ktorých viem.

--- Konce citace ---

Při tomhle počtu záznamů bude rozdíl v rychlosti sotva měřitelný, zato se Ti při přístupu podle jména a nějaké dodatečné změně dotazu nestane, že bys omylem zapisoval do jiných parametrů, než jsi zamýšlel...

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi