On 01/16/2013 08:30 AM, James Sharrett wrote:
I have a function that generates a table of records and then a SQL
statement that does a COPY into a text file.  I want to return the
number of records output into the text file from my function.  The
number of rows in the table is not necessarily the number of rows in the
file due to summarization of data in the table on the way out.  Here is
a very shortened version of what I'm doing:


CREATE OR REPLACE FUNCTION export_data(list of parameters)
   RETURNS integer AS
$BODY$

declare
My variables

Begin

  { A lot of SQL to build and populate the table of records to export}


strSQL := 'copy (select MyColumns from MyExportTable) to MyFile.csv with
CSV HEADER;';
Execute strSQL;

Return 0;

end
$BODY$
   LANGUAGE plpgsql VOLATILE

strSQL gets dynamically generated so it's not a static statement.

This all works exactly as I want.  But when I try to get the row count
back out I cannot get it.  I've tried the following:

1.
strSQL := 'copy (select MyColumns from MyExportTable) to MyFile.csv with
CSV HEADER;';
Execute strSQL into export_count;

Return export_count;

This give me an error saying that I've tried to use the INTO statement
with a command that doesn't return data.


2.
strSQL := 'copy (select MyColumns from MyExportTable) to MyFile.csv with
CSV HEADER;';
Execute strSQL;

Get diagnostics export_count = row_count;

This always returns zero.

3.
strSQL := 'copy (select MyColumns from MyExportTable) to MyFile.csv with
CSV HEADER;';
Execute strSQL;

Return row_count;

This returns a null.

Any way to do this?

If it helps:
http://www.postgresql.org/docs/9.2/interactive/sql-copy.html
"
On successful completion, a COPY command returns a command tag of the form

COPY count
The count is the number of rows copied.
"

So it looks like you will need to parse the string for the count.




Thanks in advance,
James



--
Adrian Klaver
adrian.kla...@gmail.com


--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql

Reply via email to