Обсуждение: Pass in variable from user???

Поиск
Список
Период
Сортировка

Pass in variable from user???

От
"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';


Re: Pass in variable from user???

От
"A. Kretschmer"
Дата:
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    ===

Re: Pass in variable from user???

От
"Michael Artz"
Дата:
Use 'EXECUTE' to dynamically build SQL:
-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