PgSQL: Tabellenname als Variable an Funktion uebergeben

Hi,
Code:
CREATE OR REPLACE FUNCTION test(character varying, character varying)
  RETURNS character varying AS
$$
BEGIN
	RETURN
	(
		SELECT "value"
		FROM $1
		WHERE "key" = $2
                LIMIT 1
	);
END;
$$
LANGUAGE 'plpgsql' VOLATILE;

Code:
SELECT test('tabelle', 'key')

Code:
ERROR:  syntax error at or near "$1"
LINE 1: SELECT  ( SELECT "value" FROM  $1  WHERE "key" =  $2  LIMIT ...
                                       ^
QUERY:  SELECT  ( SELECT "value" FROM  $1  WHERE "key" =  $2  LIMIT 1 )
CONTEXT:  SQL statement in PL/PgSQL function "test" near line 7

Hat jemand ne Idee, wie sich mein Problem loesen laesst?
Ich sitz' jetzt seit 9 Uhr vor Google und finde immer nur Beitraege mit aehnlichen Problemen, zu denen es aber bis jetzt keine Loesung gibt...

- MfG, Keks :)
UPDATE:

"EXECUTE" ist die Loesung:

Code:
CREATE  FUNCTION test(character varying, character varying)
  RETURNS character varying AS
$BODY$
DECLARE

	result	character varying;

BEGIN

	EXECUTE 'SELECT "value" FROM "'
	|| quote_ident($1)
	|| '"."settings" WHERE "key" = '''
	|| $2
	|| ''' LIMIT 1' INTO result;
	
	RETURN result;

END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
 
Zurück
Oben