Hallo, ik hoop dat iemand me kan helpen,
Ik wil in postgresql een functie maken waarmee een rij van een bepaalde tabel als return waarde wil terug geven. De tabelnaam wil ik dus als argument mee geven.
Dit is de functie tot nu toe:
Als ik de functie aanroep (select view_service_proc(5, 'dns_domeinen');)
krijg ik een record terug met de juiste waardes uit de juiste tabel. Alleen zonder kolomnamen. Dit komt natuurlijk omdat ik niet het goeie return type declareer en teruggeef.
Op welke manier kan ik dit wel doen? Dus de rowtype van de tabel die ik als argument mee geef.
Groeten
Ik wil in postgresql een functie maken waarmee een rij van een bepaalde tabel als return waarde wil terug geven. De tabelnaam wil ik dus als argument mee geven.
Dit is de functie tot nu toe:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| CREATE OR REPLACE FUNCTION view_service_proc(_service_id int, _table_name varchar)
RETURNS record AS
$BODY$
DECLARE
dyn_query varchar(4000);
return_value record;
BEGIN
IF (_service_id is null or _table_name is null) then
raise exception'Set a servcice id and a table name!';
ELSE
dyn_query = 'select * from '|| quote_ident(_table_name) ||' where service_id = '|| quote_literal(_service_id);
execute dyn_query into return_value;
return return_value;
END IF;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION view_service_proc(_service_id int, _table_name varchar) OWNER TO provis; |
Als ik de functie aanroep (select view_service_proc(5, 'dns_domeinen');)
krijg ik een record terug met de juiste waardes uit de juiste tabel. Alleen zonder kolomnamen. Dit komt natuurlijk omdat ik niet het goeie return type declareer en teruggeef.
Op welke manier kan ik dit wel doen? Dus de rowtype van de tabel die ik als argument mee geef.
Groeten