Slozene typy v PL/pgSQL
Lukáš Vadinský
lukin na pef.czu.cz
Pátek Červenec 1 20:12:12 CEST 2005
Hezky den,
dekuji vam za odpoved. Pokud si spustite na svem sql serveru nasledujici sekvenci prikazu, zjistite, co me trapi.
CREATE TABLE table1
(
id serial NOT NULL,
field1 varchar(10)
);
INSERT INTO table1 (field1) VALUES ('yes');
CREATE OR REPLACE FUNCTION func1()
RETURNS varchar AS
$$
DECLARE
t varchar := 'table1';
f varchar := 'field1';
r record;
v varchar;
BEGIN
select * into r from table1 where id = 1;
v := r.field1;
RETURN v;
END;
$$
LANGUAGE 'plpgsql';
SELECT func1();
Toto vam vrati retezec 'yes'.
Ted zkuste spustit nasledujici sekvenci, ktera pouze ve funkci nahradi vyraz 'v := r.field1;' za 'v := r.f;'.
CREATE OR REPLACE FUNCTION func1()
RETURNS varchar AS
$$
DECLARE
t varchar := 'table1';
f varchar := 'field1';
r record;
v varchar;
BEGIN
select * into r from table1 where id = 1;
v := r.f;
RETURN v;
END;
$$
LANGUAGE 'plpgsql';
SELECT func1();
To by Vam melo napsat neco jako 'record "r" has no field "f"'. A to je prave to, co bych rad vedel. Zda a jestli je mozne, aby byly oba parametry promenne.
Snad vas tim moc nezdrzuji, dekuji vam za vas cas.
Lukas
Další informace o konferenci Test