Pass in variable from user???

Started by syohonn@gmail.comalmost 20 years ago3 messagesgeneral
Jump to latest
#1syohonn@gmail.com
syohonn@gmail.com

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';

#2A. Kretschmer
andreas.kretschmer@schollglas.com
In reply to: syohonn@gmail.com (#1)
Re: Pass in variable from user???

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 ===

#3Michael Artz
mlartz@gmail.com
In reply to: syohonn@gmail.com (#1)
Re: Pass in variable from user???

Use 'EXECUTE' to dynamically build SQL:

http://www.postgresql.org/docs/8.1/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
<http://www.postgresql.org/docs/8.1/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN&gt;
-Mike

Show quoted text

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