SQL funkce v PgSQL

"Zíka Aleš, Ing." Ales.Zika na pel.br.ds.mfcr.cz
Úterý Únor 25 14:55:45 CET 2003


	Zdaavim,

	mam takovy problem, se SQL fukcemi v PgSQL 7.2.3.
	Zkousel jsem priklad v kapitole 9.2.1, vytvoril jsem tabulku emp a
naplnil ji daty
test=# CREATE TABLE emp (name text, salary int);
test=# INSERT INTO emp VALUES ('jedna', 100);
test=# INSERT INTO emp VALUES ('dva', 1000);
test=# INSERT INTO emp VALUES ('tri', -1000);
test=# INSERT INTO emp VALUES ('ctyri', -1500);
test=# INSERT INTO emp VALUES ('pet', -100);

	Takze obsah tabulky byl:
test=# SELECT * FROM emp;
 name  | salary
-------+--------
 jedna |    100
 dva   |   1000
 tri   |  -1000
 ctyri |  -1500
 pet   |   -100
(5 rows)

	Vytvoril jsem funkci:
test=# CREATE FUNCTION clean_emp () RETURNS void AS '
test'# DELETE FROM emp WHERE salary < 0;
test'# ' LANGUAGE SQL;

	Po jejim spusteni bych cekal, ze v tabulce zbydou jen dva zaznamy
'jedna' a 'dva', jenze ne:
test=# SELECT clean_emp();
 clean_emp
-----------
 NULL
(1 row)

test=# SELECT * FROM emp;
 name  | salary
-------+--------
 jedna |    100
 dva   |   1000
 ctyri |  -1500
 pet   |   -100
(4 rows)

	Tedy ta fukce vymazala jen jediny zaznam a skoncila, teprve po
dalsich dvou spustenich zlikvidovala postupne i zbyle dva zazanmy vyhovuji
podmince.

	Trochu jsem si s tim hral a delaji to i jine funkce a treba i s
prikazem UPDATE, vzdycky upravi jen jediny zaznam a skonci.

	To je normalni a neco jsem nepochopil, nebo to je chyba?
	Konfigurace W2kPro + cygwin + PgSQl 7.2.3

	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


Další informace o konferenci Databases