Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zwracanie typu record
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
zalew
  1. CREATE OR REPLACE FUNCTION "public"."test_recordu" () RETURNS "pg_catalog"."record" AS'
  2. select * from users where id=''1''
  3. 'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

  1. SELECT * FROM test_recordu()

Cytat
ERROR:  a column definition list is required for functions returning "record"


1.
co mam zrobic zeby mi zwrocilo poprawny rekord?

2.
dlaczego w 'ems postgres manager' nie mam na liscie typpow typu RECORD tylko dopiero gdzies na liscie dalej pg_calagog.rozne_takietam i w nich record?

na oba pytania szukalem oczywiscie odp po sieci z marnym skutkiem..
Jabol
jeżeli chodzi o pierwsze to albo użyj języka sql do stworzenia funkcji albo napisz to tak
Kod
CREATE OR REPLACE FUNCTION test_rekordu()
RETURNS record AS '
DECLARE
    rec RECORD;
BEGIN
    SELECT * FROM tabela INTO rec WHERE pole = ''1'';
    RETURN rec;
END;
'
LANGUAGE plpgsql
Co do drugiego niestety pomoć nie umiem sad.gif.
zalew
dzieki za pomoc, ale w obu przypadkach co polecasz nadal to samo :/

moze jakis wlasny dzialajacy przyklad ktos ma, bo moze jakis drobiazg pomijam? :/
Jabol
hmm... a w jakim sensie działa źle? opisz dokładniej
zalew
hmm dokladnie to co wyzje napisalem czyli komunikat
Cytat
ERROR:  a column definition list is required for functions returning "record"

i nic nie zwraca.. sam error

oczywiscie dodam na wszleki wypadek, ze w tabeli jest kilka rekorodw, nazwa sie zgadza itp, coby nie bylo smile.gif

z tresci bledu mozna wnioskowac, ze baza chca aby rekord mial zdefiniowane kolumny, ale
a. nie wiem jak to zrobic
b. nigdzie w dokumentacjach tego nie moge znalezc ani w sieci
c. zaden z przykladow jakie widzialem w sieci nic takiego nie mial
tzn probowalem "into rec.login, rec.pass" bo takie cos tez widzailem w przykladach ale nici z tego :/ to samo :/



///edit
cholerka.. chyba mam :/

7.4 docs
http://www.postgresql.org/docs/7.4/interac...clarations.html
Cytat
One should also realize that when a PL/pgSQL function is declared to return type record, this is not quite the same concept as a record variable, even though such a function may well use a record variable to hold its result. In both cases the actual row structure is unknown when the function is written, but for a function returning record the actual structure is determined when the calling query is parsed, whereas a record variable can change its row structure on-the-fly.


7.2 docs
http://www.postgresql.org/docs/7.2/interac...clarations.html
Cytat
Thus, for example, one cannot declare a function returning RECORD.


czyli po prostu nie moge zwrocic rekordu w 7.2 podczas gdy 7.4 robi tak jak powinno czyli w locie zapisuje record tak jak myslalem... :/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.