Portál AbcLinuxu, 19. dubna 2024 18:03


Dotaz: PostgreSQL procedura

2.8.2013 11:05 basss | skóre: 2
PostgreSQL procedura
Přečteno: 683×
Odpovědět | Admin
Dobrý den

Zkouším přejít z MySql na PostgreSQL tak v tom dost plavu.

Problém nebo má neznalost zpočívá z v mysql mam proceduru

BEGIN DECLARE terminal_cislo int; SET terminal_cislo = automat; SELECT * from aktualizace_debug where cislo_automatu=terminal_cislo; END

vysledek me to vrací vysledek z tabulky ma nekolik sloucu a neco malo radku.

jak to same udelat v PostgreSQL aby procedura vratila vysledek select * from tabulka;

Děkuji za ukazky bude to asi jednoduche ale nejak jsem se na tom zasekl.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (okbob)
okbob avatar 2.8.2013 15:05 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: PostgreSQL procedura
Odpovědět | | Sbalit | Link | Blokovat | Admin
V PostgreSQL nejsou procedury - pouze funkce, přičemž některé funkce mohou vracet tabulku.

Nějjednodušší kód:
CREATE OR REPLACE FUNCTION foo(IN terminal_cislo int,
                               OUT sloupec1 int,
                               OUT sloupec2 int,
                               OUT sloupec3 int)
RETURNS SETOF record AS $$
SELECT sloupec1, sloupec2, sloupec3
  WHERE cislo_automatu = $1
$$ LANGUAGE SQL;

-- volani
SELECT * FROM foo(10);
Jinak v Postgresu, v Oraclu se procedury tohoto typu nepíší - používají se primárně pohledy. Procedurální kód se používá primárně pro změny dat - případně dopočítání v případech, kdy si nevystačím s pohledy. Nemá cenu a nedoporučuje se wrapovat SELECTy uloženými procedurami. Od toho jsou pohledy.

Něco dokumentace k přečtení:

Založit nové vláknoNahoru

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

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.