Databáze > Firebird a Interbase

TQuery - SP

(1/1)

Stanislav Hruška:
Existujú/máte nejaké všeobecné pravidlá, podľa ktorých sa rozhodnúť, čo ponechať na TQuery a čo na StoredProcedure? Pravidlá v helpe a pod. som čítal, ale mám na mysli niečo také:

Mám realtívne jednoduchý SQL (Select) výraz, ktorý vracia menšiu množinu dát. Vždy sú spúšťané užívateľom. Napr. výberom prvku zo zoznamu/stromu. Príklad mám zoznam objektov, ktoré si načítavam podľa dvoch podmienok

- je aktívny (to si môže užívateľ ľubovoľne meniť - určuje s ktorými chce pracovať)
- má "platnosť" pre daný rok

Tak či tak sa to vykoná na serveri. Ale

SP
- má viac možností, if apod.
- je optimalizovaná pre DB
- zmenšujem veľkosť klienta a zjednodušujem ho
- kto sa v nich vyzná, ak ich bude veľa

SQL
- SQL si v prípade potreby upravím na mieste, vidím ho
- pchať všetko na server mi akosi nevonia. Neviem povedať prečo
- môžem si nadefinovať spoločné časti. Konkrétne tak mám pre uvedený príklad string "Where", včítane parametrov. Je niečo také možné v SP?

Predpokladám, že z tohto pohľadu je jedno, či budem používať serverovú alebo embeded verziu FB.

To je otras, začnem písať a neviem svoje pocity/myšlienky dať na papier. Snáď ma pochopíte. Ďakujem.

pf1957:

--- Citace: Stanislav Hruška  17-10-2012, 13:37:10 ---Existujú/máte nejaké všeobecné pravidlá, podľa ktorých sa rozhodnúť, čo ponechať na TQuery a čo na StoredProcedure?

--- Konce citace ---
Ja myslim, ze pro tebe pripadaji v uvahu asi 2 prakticka kriteria:

* zivotni cyklus aplikace: v budoucnu muze vyvstat treba pozadavek na pristup pres internet obecne z nekolika ruznych klientu. Pokud nacpes zejmena business logiku na klienta, tak tvurce noveho klienta bude muset vse implementovat znovu, zatimco pokud to bude na strane serveru, jen pouzije jiz hotove.
* slozitost SQL: SQL jazyk je dost podivna zalezitost, kdy je nekdy docela zahul sestavit a odladit slozity SQL prikaz a to nemluvim o jeho udrzbe, kdyz se ti neco zmeni a ty musis takovy prikaz preformulovat. V takovem pripade je IMHO vhodne, nez se morit s SQL dotazem, je vhodnejsi pouzit SP, ktera ti umozni programovat proceduralne tj. rozbit vypocet na casti, pouzit pomocne promenne atd.Pokud nemas nejaky tool s podporou ladeni SP, tak to muze byt docela opruz. Da se udelat logovani do souboru (pres SP) a kdyz se ptaku ohnivaku povoli prava pro ExternalFileAccess, tak se da psat do textoveho souboru.

Jinak treba orientace pomoci IBE Experta bude vyrazne lepsi nez v Delphi kodu, protoze u kazdeho objektu v DB si muzes nechat zobrazit cross reference, tj. kdo ten objekt pouziva a jake jine objekty ten objekt pouziva. Samozrejme to predpoklada, ze pouzijes Descriptions a u triggeru a SP i komentare.

Stanislav Hruška:
Zaujal ma hlavne bod 2. IBE Expert-a mám. Takže sme dvaja experti   ;D

// Samozrejme to predpoklada, ze pouzijes Descriptions a u triggeru a SP i komentare.
Tomu nerozumiem, kde si o tom prečítam - kľúčové slová. Mám dva helpy.

- IBE Expert FireBird Guide
- IBE Book 2-2005

pf1957:

--- Citace: Stanislav Hruška  17-10-2012, 14:26:54 ---// Samozrejme to predpoklada, ze pouzijes Descriptions a u triggeru a SP i komentare.
Tomu nerozumiem, kde si o tom prečítam - kľúčové slová. Mám dva helpy.

--- Konce citace ---
Na to by ti mel stacit letmy pohled do GUI klientaIBE. Vse co definujes , pocinaje domainama a konce SP ma pole Description a kdyz ho zadavas, tak dole byva memo, kde je vhodne si popsat, co a k cemu je to dobry. Vedle toho triggery a SP predstavuji nejaky kod, takze je vhodne pouzit standardni SQL komentare /* .... */ a radkovy --.

Jinak cross reference objektu jsou na tabu Dependecies nahore, u jendotlivych poli v tabulce na tabu dole vedle Description. Ale plati to pro prof. edici IBE. Jak vypada standard nebo free nevim.

Stanislav Hruška:
Desktop Edition to má.
Na tie komentáre si budem musieť zvyknúť. Ak sa to rozbehne, tak tam toho bude dosť.

Navigace

[0] Seznam témat

Přejít na plnou verzi