[ MarkoBalkan @ 07.08.2009. 22:28 ] @
imam proceduru

Code:



CREATE OR REPLACE FUNCTION marko1()
  RETURNS setof record   AS
$BODY$
select   * from prva,druga   where prva."Id"=druga."Id_prva" 
$BODY$
LANGUAGE 'sql';
 



i ova procedura mi vrati x slogova ali sa jednim poljem.

što staviti umjesto record da mi vraća slogove sa poljima.

npr.

select marko1()

vrati

marko1
record
(1,1,1,2,3)

a kada probam

select * from marko1
naravno javi grešku


ERROR: a column definition list is required for functions returning "record"
LINE 1: select * from marko1()
^

********** Error **********

ERROR: a column definition list is required for functions returning "record"
SQL state: 42601
Character: 16


ako imam jednu tableu sve funkcionira.
[ jablan @ 07.08.2009. 23:26 ] @
Nije li ti lakše da napraviš VIEW umesto funkcije za to što hoćeš da ti se vrati?
[ MarkoBalkan @ 07.08.2009. 23:29 ] @
Citat:
jablan: Nije li ti lakše da napraviš VIEW umesto funkcije za to što hoćeš da ti se vrati?


u pravu si.
ali ako znaš kako ide, molim te napiši.
[ jablan @ 07.08.2009. 23:37 ] @
Ne mogu da ti napišem bolje nego što stoji u dokumentaciji:

http://www.postgresql.org/docs/8.1/static/sql-createview.html
[ MarkoBalkan @ 07.08.2009. 23:55 ] @
Citat:
jablan: Ne mogu da ti napišem bolje nego što stoji u dokumentaciji:

http://www.postgresql.org/docs/8.1/static/sql-createview.html


ne za view nego za proceduru za ovaj problem.
samo da vidim kako ide.

moram se malo po igrati sa time.
[ chachka @ 08.08.2009. 21:00 ] @
Napravi kompozitni tip podataka i onda napravi funkiciju koja vraca taj tip. Ako hoćeš detaljniji odgovor (od mene) onda navedi:
1. DDL od tabela "prva" i "druga"
2. Koju verziju servera koristiš?

[ MarkoBalkan @ 08.08.2009. 23:00 ] @
Citat:
chachka: Napravi kompozitni tip podataka i onda napravi funkiciju koja vraca taj tip. Ako hoćeš detaljniji odgovor (od mene) onda navedi:
1. DDL od tabela "prva" i "druga"
2. Koju verziju servera koristiš?


evo kolona za prvu i drugu
prva -> Id,A
druga ->Id,Id_prva,B,C

ovo je bilo za probu.


verzija postgresql-a 8.4

jel možeš odgovoriti na privatnu poruku?

hvala
[ chachka @ 10.08.2009. 08:54 ] @
1. To što si postovao nije DDL!
2. Pošto se radi o 8.4 serveru, a nisi postavio DDL tabela, mogu ti reći samo: upotrebi RETURNS TABLE klauzulu komande CREATE FUNCTION.
3. Nevidim potrebu da odgovaram putem privatnih poruka
[ MarkoBalkan @ 10.08.2009. 12:40 ] @
to sam i prije probao ali javlja grešku



******* Error **********

ERROR: syntax error at or near "AS"
SQL state: 42601
Character: 105

[ MarkoBalkan @ 10.08.2009. 12:57 ] @
evo procedure ako nekome treba

Code:


CREATE OR REPLACE FUNCTION marko11() 
RETURNS   TABLE (Id integer,A double precision,B double precision)
AS $$
    begin
     RETURN QUERY (
      select "prva"."Id","prva"."A","druga"."B" from prva,druga where prva."Id"=druga."Id_prva" 
      );
    end;
$$

  LANGUAGE 'plpgsql' ;