Hi Pavel,

many thanks for the very prompt reply.

I was under the impression that a refcursor was a pointer to a dataset already 
resident on the database, and were used to return a reference to a dataset 
resident in the database to a client application.

What I am trying to do is build a table valued variable in a client application 
then submit it to a stored procedure resident on the database, and have that 
stored procedure manipulate it as though it were a table [be it inserting, 
updating or deleting based upon its contents].

Is this possible?

I apologise for not making my question more clear.

Thanks,

Andrew.

> Date: Fri, 23 Oct 2009 20:10:48 +0200
> Subject: Re: [SQL] Table Valued Parameters
> From: pavel.steh...@gmail.com
> To: andre...@hotmail.com
> CC: pgsql-sql@postgresql.org
> 
> Hello
> 
> 2009/10/23 Andrew Hall <andre...@hotmail.com>:
> > Hi,
> >
> > I was wondering whether anybody would be able to advise me on how (if it is
> > possible) to port some functionality from Oracle?
> >
> > This is just an example - in Oracle, I am able to do the following
> >
> 
> Use refcursor, please.
> 
> http://www.postgresql.org/docs/8.4/static/plpgsql-cursors.html
> 
> Regards
> Pavel Stehule
> 
> > --
> > -- Create a data type which replicates the data structure of a single user
> > in my application.
> > -- I know that this can be done using PostgreSQL.
> > --
> >
> > CREATE TYPE TY_APP_USER AS OBJECT
> > (
> >   aur_id                 INT
> > , aur_username           VARCHAR2(30  CHAR)
> > , aur_is_account_enabled VARCHAR2(1   CHAR)
> > , aur_created_date       DATE
> > , aur_updated_date       TIMESTAMP
> > )
> > /
> >
> > --
> > -- Create a data type which can store many instances of a single
> > 'TY_APP_USER'
> > -- [essentially this is a table valued data type]. An instance of this data
> > type can be
> > -- created and populated by the client application [a java based one in my
> > case].
> > --
> > -- I can't find any reference to something
> > -- similar to this using postgreSQL.
> > --
> >
> > CREATE TYPE TTY_APP_USER AS TABLE OF TY_APP_USER
> > /
> >
> > --
> > -- Next define a stored procedure which can accept an instance of a
> > TTY_APP_USER data
> > -- type, and treat that instance as a table, for example ...
> > --
> >
> > CREATE OR REPLACE PROCEDURE prAddUsers
> > (
> >   p_in_users IN tty_app_user
> > )
> > IS
> > BEGIN
> >
> >   INSERT
> >     INTO
> >          users
> >        (
> >          aur_id
> >        , aur_username
> >        , aur_is_account_enabled
> >        , aur_created_by
> >        , aur_created_date
> >        )
> >   SELECT
> >          aur_id
> >        , aur_username
> >        , aur_is_account_enabled
> >        , aur_created_by
> >        , aur_created_date
> >     FROM
> >          TABLE
> >          (
> >            CAST
> >            (
> >              p_in_users AS tty_app_user
> >            )
> >          );
> >
> > END prUpdateUsers;
> >
> > My motivation for doing this is to reduce network round trips, instead of
> > having 1 call per record to be sent to the db, I can have 1 call passing all
> > values which I wish to store in the database.
> >
> > Sending multiple records to the database as a result of a single form
> > submission is a requirement that arises frequently [the example is just
> > intended to demonstrate the principle!], and I would be grateful if anybody
> > could help me to arrive at an optimal solution.
> >
> > Cheers,
> >
> > Andrew.
> >
> >
> >
> >
> >
> >
> > ________________________________
> > Download Messenger onto your mobile for free. Learn more.
> 
> -- 
> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-sql
                                          
Chat to your friends for free on selected mobiles. Learn more.                  
                  
_________________________________________________________________
Chat to your friends for free on selected mobiles
http://clk.atdmt.com/UKM/go/174426567/direct/01/

Reply via email to