SQL funkce v PgSQL

"Zíka Aleš, Ing." Ales.Zika na pel.br.ds.mfcr.cz
Středa Únor 26 15:10:38 CET 2003


	Diky, to chodi bez problemu. I ve vsech ostatnich pripadech.
	Nemel bych to hlasit jako bug? Zda se, ze je nejak problem, kdyz
funkce ma vracet void, coz je myslim dost nova ficura.

	Jeste bych mel takovej dalsi dotaz. Mam takovehle dve funkce:

CREATE FUNCTION spocitej_vysledek() RETURNS int AS '
 UPDATE cas SET penalizace = (SELECT sum(b.penalizace)
   FROM brankova_penalizace AS b
   WHERE (b.id_zavodnika, b.zavod, b.jizda) = (cas.id_zavodnika, cas.zavod,
cas.jizda))
  WHERE cas.aktivni;
 UPDATE cas SET vysledek = penalizace + extract(epoch FROM cisty_cas) WHERE
aktivni;
 SELECT 1;
' LANGUAGE SQL;

CREATE FUNCTION napln_poradi(int) RETURNS int AS '
 UPDATE celkove_poradi SET vysledek = (SELECT sum(c.vysledek)
  FROM cas AS c
  WHERE (celkove_poradi.id_zavodnika, celkove_poradi.zavod) =
(c.id_zavodnika, c.zavod)
  GROUP BY id_zavodnika, zavod),
 status = (SELECT max(c.status)
  FROM cas AS c
  WHERE (celkove_poradi.id_zavodnika, celkove_poradi.zavod) =
(c.id_zavodnika, c.zavod)
  GROUP BY id_zavodnika, zavod)
 WHERE zavod = $1;
 SELECT 1;
' LANGUAGE SQL;

	Neslo by to napsat nejak jednoduseji? V prvni proste potrebuju
spocitat hodnotu jednoho sloupce (penalizace) a soucasne ji vyuzit pro
vypocet druheho sloupce (vysledek).
	V druhem pripade tam mam dva subselecty se stejnymi podminkami,
jenze SET (vysledek, status) = (SELECT ... mi parser nebere. UPDATE FROM
taky nejde pouzit, protoze zase odmita klauzuli GROUP BY.

	Dá se udelat nejak lip?


	Diky,

			Ales Zika
			Pelhrimov

			e-mail: Ales.Zika na pel.br.ds.mfcr.cz
				  Ales.Zika na seznam.cz
			SMS:    Ales.Zika na sms.underground.cz

> zkuste to predelat na:
> 
> CREATE FUNCTION clean_emp () RETURNS int AS
> 'DELETE FROM emp WHERE salary < 0; SELECT 1;' LANGUAGE SQL;
> 
>  Rozumnou odpoved na to proc to v tomto pripade chodi nemam...
> 
>     Karel
> 
> -- 
>  Karel Zak  <zakkr na zf.jcu.cz>
>  http://home.zf.jcu.cz/~zakkr/
> 


Další informace o konferenci Databases