Vlákno názorů k článku Migrace aplikace z Oracle do PostgreSQL od Ivan - Obecně platí pravidlo, že by funkce neměly obalovat...

  • Článek je starý, nové názory již nelze přidávat.
  • 6. 9. 2017 17:23

    Ivan (neregistrovaný)

    Obecně platí pravidlo, že by funkce neměly obalovat jednoduché SQL příkazy. Zvlášť, pokud se tyto funkce volají z komplikovanějších SELECTů. Jednak se tím snižuje prostor pro optimalizaci (SQL se uvnitř funkce optimalizuje izolovaně). Hlavně ale dochází ke generování a počítání velkého množství zanořených SQL příkazů, a to má dost velkou režii

    Jeste dodam jeden postreh. V SQL se neda dost dobre strukturovane programovat. A kdo chce za kazdou cenu nejak sdilet kod, tak prave vklada SQL do funkci, ktere nasledne vola z jineho SQL. V Postgre s tim az tak velky problem neni, ale v Oracle to rekurzivni SQL pouziva jine SCN a vidi i data, ktere nadrazene SQL jeste videt nemuze (phantom read). Takze nejenze je to pomale, ale navic to neni logicky spravne, a ve vice-uzivatelskem prostredi vam takovy dotaz muze vratit totalni bramboracku.

  • 6. 9. 2017 18:09

    Pavel Stěhule

    To je dobrá připomínka - díky za ní.

    V SQL prostředí ten nástroj, který bych měl používat proti duplikování kódu nejsou funkce! K tomu slouží pohledy - což hromada programátorů nepochopila -svoje znalosti přenášely do prostředí SP 1:1 z klasického programování - případně z Cobolu, FoxPro, kde pohledy neexistovaly - jde o nesprávné uchopení technologie - navíc v tomto případě s potenciálně fatálními důsledky.