[EMAIL PROTECTED] (=?iso-8859-1?q?Dag-Erling_Sm=F8rgrav?=) writes: > Tom Lane <[EMAIL PROTECTED]> writes: >> [EMAIL PROTECTED] (=?iso-8859-1?q?Dag-Erling_Sm=F8rgrav?=) writes: >>> ERROR: type tablename does not exist >> The example is just an example. Create an actual table and use its >> name.
> If you read the example, you will see that the function is clearly > intended to operate on a table whose name is specified as a parameter > to the function, and that "tablename" is used as the type name for > that parameter, and not a placeholder for an actual table name. No, it's you who are misunderstanding. The example is showing use of a composite-type parameter (ie, a row value). Perhaps fleshing out the example will make it clearer: regression=# create table tablename(f1 text, f3 text, f5 text, f7 text); CREATE TABLE regression=# insert into tablename values('a','b','c','d'); INSERT 577890 1 regression=# CREATE FUNCTION concat_selected_fields(tablename) RETURNS text AS ' regression'# DECLARE regression'# in_t ALIAS FOR $1; regression'# BEGIN regression'# RETURN in_t.f1 || in_t.f3 || in_t.f5 || in_t.f7; regression'# END; regression'# ' LANGUAGE plpgsql; CREATE FUNCTION regression=# select * from tablename t; f1 | f3 | f5 | f7 ----+----+----+---- a | b | c | d (1 row) regression=# select concat_selected_fields(t.*) from tablename t; concat_selected_fields ------------------------ abcd (1 row) regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org