Обсуждение: Pass in variable from user???
Using PL/PGSQL, I am trying to create a procedure to display the count of rows in any single table of a database. The End-user would pass in a table name and the prodecure would display the table name with the row count. I am able to hardcode the variable for table and get the appropriate results from my count function (see below), but cannot pass in a variable and have the function work. Any suggesstions??? CREATE FUNCTION get_table_count(tablename text) RETURNS integer AS $$ DECLARE --tablename ALIAS FOR $1; rowcount INTEGER; BEGIN SELECT INTO rowcount count(*) FROM tablename; RETURN rowcount; END; $$ LANGUAGE 'plpgsql';
am 13.05.2006, um 14:15:52 -0700 mailte syohonn@gmail.com folgendes: > Using PL/PGSQL, I am trying to create a procedure to display the count > of rows in any single table of a database. The End-user would pass in a > table name and the prodecure would display the table name with the row > count. > I am able to hardcode the variable for table and get the appropriate > results from my count function (see below), but cannot pass in a > variable and have the function work. Any suggesstions??? > > CREATE FUNCTION get_table_count(tablename text) RETURNS integer AS $$ > DECLARE > > --tablename ALIAS FOR $1; > > rowcount INTEGER; > BEGIN > > SELECT INTO rowcount count(*) FROM tablename; You can't do SL direct with such parameters, but you can use EXECUTE. Please read: http://www.postgresql.org/docs/8.1/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN HTH, Andreas -- Andreas Kretschmer (Kontakt: siehe Header) Heynitz: 035242/47215, D1: 0160/7141639 GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net === Schollglas Unternehmensgruppe ===
Use 'EXECUTE' to dynamically build SQL:
http://www.postgresql.org/docs/8.1/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
-Mike
On 13 May 2006 14:15:52 -0700, syohonn@gmail.com <syohonn@gmail.com > wrote:
Using PL/PGSQL, I am trying to create a procedure to display the count
of rows in any single table of a database. The End-user would pass in a
table name and the prodecure would display the table name with the row
count.
I am able to hardcode the variable for table and get the appropriate
results from my count function (see below), but cannot pass in a
variable and have the function work. Any suggesstions???
CREATE FUNCTION get_table_count(tablename text) RETURNS integer AS $$
DECLARE
--tablename ALIAS FOR $1;
rowcount INTEGER;
BEGIN
SELECT INTO rowcount count(*) FROM tablename;
RETURN rowcount;
END;
$$ LANGUAGE 'plpgsql';
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster