» Poradna » Programy

PostgreSQL stored procedure return dataset

 |   |  Microsoft Windows 10 Firefox 73.0

Aho, trochu som testoval novy PostgreSQL 12A nemozem prist na to, ako z ulozenej procky vratit dataset.Je to vobec nieco taketo mozne vo verzii 11 alebo 12 ? CREATE OR REPLACE PROCEDURE test_select_proc()LANGUAGE plpgsql AS $$BEGIN select * from tabulka;END;$$;

Mohlo by vás také zajímat

Odpovědi na otázku

 |   |  Linux Firefox 73.0

Postgresove procedury nemohou vracet vysledek SELECTu. Muzete pouzit pouze OUT promenne. V postgresu jsou kvuli kompatibilite s Oraclem, coz ale znamena jine chovani nez ma MSSQL.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Firefox 73.0

Pan Stehule dakujem za odpoved.A este pod otazka A ako to bude v buducnosti? Nie je tato funkcionalita nahodou v plane pre nejaku novu verziu postgrsql?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Firefox 73.0

Já jsem kdysi napsal prototyp, takže technicky to možné je, a nyní by to bylo jednodušší, protože v Postgresu jsou opravdu procedury. Co ale vím, tak nikdo na tom nedělá (intenzivně). Jsou jakési pokusy o zjednodušení migrace z T-SQL, ale mezi Microsoftem a Postgresem jsou opravdu velké rozdíly, takže migrace mohou být komplikovanější. Navíc Microsoft nemá tak nepříjemnou licenční politiku, takže firmy tolik z MS neutíkají. Možná, že to jednou v Postgresu bude, ale nespoléhal bych se na to (je to o náhodě, že někdo zaplatí vývoj nebo to napíše sám). Jinak v Postgresu můžete psát tabulkové funkce a funkce může vracet recordset. Jde jen o jinou syntax a trochu jiný přístup. Musíte říct dopředu, co bude (jaké sloupce) funkce vracet.CREATE OR REPLACE FUNCTION test()RETURNS SETOF tabulka AS $$BEGIN RETURN QUERY SELECT * FROM tabulka;END:$$ LANGUAGE plpgsql;SELECT * FROM test();

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Return, Postgresql