abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:33 | IT novinky

    Společnost Flipper Devices oznámila Flipper One. Zcela nový Flipper postavený od nuly. Jedná se o open-source linuxovou platformu založenou na čipu Rockchip RK3576. Hledají se dobrovolníci pro pomoc s dokončením vývoje (ovladače, testování, tvorba modulů).

    Ladislav Hagara | Komentářů: 2
    dnes 14:00 | Nová verze

    Vývojáři Wine oznámili vydání verze 2.0 knihovny vkd3d pro překlad volání Direct3D na Vulkan. Přehled novinek na GitLabu.

    Ladislav Hagara | Komentářů: 0
    dnes 11:33 | Nová verze

    Společnost Red Hat oznámila vydání Red Hat Enterprise Linuxu (RHEL) 10.2 a 9.8. Vedle nových vlastností a oprav chyb přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Vypíchnout lze CLI AI asistenta goose. Podrobnosti v poznámkách k vydání (10.2 a 9.8).

    Ladislav Hagara | Komentářů: 0
    dnes 05:11 | Nová verze

    Organizace Apache Software Foundation (ASF) vydala verzi 30 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 0
    dnes 05:00 | Nová verze

    Byla vydána nová verze 7.0 svobodného open source redakčního systému WordPress. Kódové jméno Armstrong bylo vybráno na počest amerického jazzového trumpetisty a zpěváka Louise Armstronga (What A Wonderful World).

    Ladislav Hagara | Komentářů: 0
    dnes 04:55 | Bezpečnostní upozornění

    V Drupalu byla nalezena a opravena kritická zranitelnost SA-CORE-2026-004 (CVE-2026-9082). Útočník může provádět libovolné SQL dotazy na webech používajících databázi PostgreSQL.

    Ladislav Hagara | Komentářů: 0
    včera 14:11 | Komunita

    Richard Hughes oznámil, že službu Linux Vendor Firmware Service (LVFS) umožňující aktualizovat firmware zařízení na počítačích s Linuxem, nově sponzoruje také společnost HP.

    Ladislav Hagara | Komentářů: 3
    včera 13:33 | IT novinky

    O víkendu proběhla demopárty Outline 2026. Publikována byla prezentovaná dema. Upozornit lze na 16 bajtové, opravdu šestnáct bajtové, zvukově obrazové demo Wake Up! 16b (YouTube).

    Ladislav Hagara | Komentářů: 2
    včera 04:22 | Nová verze

    Byla vydána nová verze 9.5 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání a na YouTube.

    Ladislav Hagara | Komentářů: 0
    19.5. 21:00 | IT novinky

    Dnes a zítra probíhá vývojářská konference Google I/O 2026. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (12%)
     (8%)
     (2%)
     (14%)
     (31%)
     (4%)
     (7%)
     (3%)
     (16%)
     (26%)
    Celkem 1675 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Dotaz: Postgresql vnořená funkce id sloupců

    12.12.2018 12:04 ZAH | skóre: 43 | blog: ZAH
    Postgresql vnořená funkce id sloupců
    Přečteno: 1042×
    Zasek jsem se nad vnořenými funkce v Postgreql 9.1

    Mám základní funkci, která pracuje bez problémů
    CREATE FUNCTION accounting.basefun(
        IN var_year character,
        IN var_month character)
      RETURNS TABLE(
      account  character,
      debit11  double precision, 
      credit11 double precision,
      debit    double precision, 
      credit   double precision,
      debitxx  double precision, 
      creditxx double precision) AS
    $BODY$
    .....
    ......
    
    Nyní potřebuji ji použít jako zdroj dat v jiné funkci , tam jsem narazil na problém s identifikací sloupců.
     CREATE FUNCTION extfun(
        IN var_year character,
        IN var_month character)
      RETURNS TABLE(
      account  character,
      accountname  character,
      debit11  double precision, 
      credit11 double precision,
      debit    double precision, 
      credit   double precision,
      debit1x  double precision, 
      credit1x double precision, 
      debitxx  double precision, 
      creditxx double precision,
      debitact  double precision, 
      creditact double precision
      ) AS
    $BODY$
    SELECT
     ledg.account, //error
     Zde nemohu přijít jak identifikovat sloupce
     ledg.debit11,
     ledg.credit11 
    .........
    FROM 
     (SELECT 
      accounting.basechangeledger(var_year,var_month)
    ) AS ledg 
    $BODY$
    
    Předem dík za nakopnutí správným směrem.

    Řešení dotazu:


    Odpovědi

    12.12.2018 15:17 ttt
    Rozbalit Rozbalit vše Re: Postgresql vnořená funkce id sloupců
     (SELECT 
      * 
      FROM
      accounting.basechangeledger(var_year,var_month)
    ) AS ledg 
    Tvůj zápis sešrotuje sloupce do pole a vrací to jako jeden sloupec, jestli se nepletu.
    12.12.2018 19:55 ZAH | skóre: 43 | blog: ZAH
    Rozbalit Rozbalit vše Re: Postgresql vnořená funkce id sloupců
    Nezdá se, přiložená funkce vrací normálně tabulku identickou s výsledkem accounting.basefunc (zdroj from). Vtip je v tom, že potřebuji doplnit několik sloupců a tak potřebuji přístup k datům vnitřní funkce v select. Řešením je přepsání původní funkce tak aby obsahovala doplněné sloupce což úplně nevyhovuje.
    CREATE  FUNCTION  accounting.test(
        IN var_year character,
        IN var_month character)
      RETURNS TABLE(
      account  character,
      debit11  double precision, 
      credit11 double precision,
      debit    double precision, 
      credit   double precision,
      debitxx  double precision, 
      creditxx double precision
      ) AS
    $BODY$
    SELECT 
    *
    FROM 
     (SELECT 
      accounting.basefunc(var_year,var_month)
    ) AS ledg 
    
    
    $BODY$
     LANGUAGE sql VOLATILE
    
    Řešení 1× (ZAH (tazatel))
    12.12.2018 20:43 EtDirloth | skóre: 11
    Rozbalit Rozbalit vše Re: Postgresql vnořená funkce id sloupců
    Funkcia ano, ale tvoj pod-dotaz SELECT accounting.basefunc(var_year,var_month) vola funkciu vracajucu "sadu" (set returning function). Ak ju zavolas priamo v SELECT klauzule, tak musi vratit cely viacstlpcovy riadok v jedinom stlpci typu ROW(*). Predrecnik to sice chybne oznacil ako pole, ale trafil pricinu problemu. Je to to iste, ako keby si zavolal SELECT ROW(e.*) FROM accounting.basefunc(var_year,var_month);

    Ak chces pracovat s jednotlivymi stlpcami, musis to volat ako SELECT * FROM accounting.basefunc(var_year,var_month).

    Tvoja funkcia by potom mohla vyzerat takto:
    BODY$
    SELECT
     ledg.*,
     ledg.debit11,
     ledg.credit11
    FROM 
     (SELECT *
      FROM accounting.basechangeledger(var_year,var_month)
    ) AS ledg 
    $BODY$
    
    co je ale to iste ako:
    BODY$
    SELECT
     ledg.*,
     ledg.debit11,
     ledg.credit11
    FROM accounting.basechangeledger(var_year,var_month) AS ledg 
    $BODY$
    
    12.12.2018 21:18 ZAH | skóre: 43 | blog: ZAH
    Rozbalit Rozbalit vše Re: Postgresql vnořená funkce id sloupců
    Dík máš plnou pravdu.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.