From: | Andrew Hall <andrewah(at)hotmail(dot)com> |
---|---|
To: | <pgsql-sql(at)postgresql(dot)org> |
Subject: | Table Valued Parameters |
Date: | 2009-10-23 18:03:00 |
Message-ID: | COL122-W14509AEC755F5710A3CA19CDBD0@phx.gbl |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
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
--
-- 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
http://clk.atdmt.com/UKM/go/174426567/direct/01/
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Stehule | 2009-10-23 18:10:48 | Re: Table Valued Parameters |
Previous Message | Craig Ringer | 2009-10-23 10:59:34 | Re: @@Error equivalent in Postgresql |