Thread: Is this possible.

Is this possible.

From
"Harvey, Allan AC"
Date:
Hi all,

Can sombody please help me realise a function, the intent as described by...

-- Function to create the table for a new point

CREATE OR REPLACE FUNCTION make_table( varchar ) RETURNS VARCHAR AS '
    CREATE TABLE $1(
        parameter varchar(8) NOT NULL,
        value float NOT NULL,
        dt timestamp NOT NULL
        );

    CREATE INDEX $1_dtindex ON $1( dt );

    SELECT $1;
' LANGUAGE SQL;

I'm using 7.4.5.

Thanks

Allan




The material contained in this email may be confidential, privileged or copyrighted. If you are not the intended
recipient,use, disclosure or copying of this information is prohibited. If you have received this document in error,
pleaseadvise the sender and delete the document. Neither OneSteel nor the sender accept responsibility for any viruses
containedin this email or any attachments.
 

Re: Is this possible.

From
Klint Gore
Date:
On Thu, 30 Mar 2006 10:45:20 +1100, "Harvey, Allan AC" <HarveyA@OneSteel.com> wrote:
> Hi all,
>
> Can sombody please help me realise a function, the intent as described by...
>
> -- Function to create the table for a new point
>
> CREATE OR REPLACE FUNCTION make_table( varchar ) RETURNS VARCHAR AS '
>     CREATE TABLE $1(
>         parameter varchar(8) NOT NULL,
>         value float NOT NULL,
>         dt timestamp NOT NULL
>         );

     execute ''create table ''||quote_ident($1)||'' (...)'';

>     CREATE INDEX $1_dtindex ON $1( dt );

    execute ''create index ''||quote_ident($1)||''_dtindex ...'';

>     SELECT $1;

    return $1;

> ' LANGUAGE SQL;

' language plpgsql;


quote_ident function should help with sql insertion attack.

klint.


+---------------------------------------+-----------------+
: Klint Gore                            : "Non rhyming    :
: EMail   : kg@kgb.une.edu.au           :  slang - the    :
: Snail   : A.B.R.I.                    :  possibilities  :
: Mail      University of New England   :  are useless"   :
:           Armidale NSW 2351 Australia :     L.J.J.      :
: Fax     : +61 2 6772 5376             :                 :
+---------------------------------------+-----------------+