Обсуждение: Table-name as parameter to plpgsql
The following function failes to compile:
CREATE OR REPLACE FUNCTION test_func(p_table_name VARCHAR) RETURNS VOID AS $$
BEGIN INSERT INTO p_table_name(some_field) VALUES('some_value');
END;
$$ LANGUAGE plpgsql;
Gives:
ERROR: syntax error at or near "$1"
LINE 1: INSERT INTO $1 (some_field) VALUES('some_value')
Any hints on how to use function-parameters as table-names like I'm trying to
above?
--
Andreas Joseph Krogh <andreak@officenet.no>
Senior Software Developer / Manager
------------------------+---------------------------------------------+
OfficeNet AS | The most difficult thing in the world is to |
Karenslyst Allé 11 | know how to do a thing and to watch |
PO. Box 529 Skøyen | somebody else doing it wrong, without |
0214 Oslo | comment. |
NORWAY | |
Tlf: +47 24 15 38 90 | |
Fax: +47 24 15 38 91 | |
Mobile: +47 909 56 963 | |
------------------------+---------------------------------------------+
Andreas Joseph Krogh написа:
> The following function failes to compile:
>
> CREATE OR REPLACE FUNCTION test_func(p_table_name VARCHAR) RETURNS VOID AS $$
> BEGIN
> INSERT INTO p_table_name(some_field) VALUES('some_value');
> END;
> $$ LANGUAGE plpgsql;
>
> Gives:
> ERROR: syntax error at or near "$1"
> LINE 1: INSERT INTO $1 (some_field) VALUES('some_value')
>
> Any hints on how to use function-parameters as table-names like I'm trying to
> above?
>
Use EXECUTE
(http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN).
--
Milen A. Radev