On Oct 28, 2013, at 5:21 PM, Adrian Klaver <adrian.klaver@gmail.com> wrote:
> On 10/28/2013 02:27 PM, Perry Smith wrote:
>>
>> On Oct 28, 2013, at 4:11 PM, Merlin Moncure <mmoncure@gmail.com> wrote:
>>
>>> On Mon, Oct 28, 2013 at 4:06 PM, Perry Smith <pedzsan@gmail.com> wrote:
>>>> When I execute the SELECT statement directly I get:
>>>>
>>>> psql:table.sql:28: out of memory for query result
>>>
>>> psql will do this automatically if you tell it to:
>>> http://doginpool.blogspot.com/2011/11/retrieving-large-resultsets-from.html
>>>
>>> cursors can work with your code, but they need participation from the
>>> client side. basically you stage the cursor then repeatedly FETCH
>>> until done.
>>
>> Ok. I'll try that. I'm still curious how to do it using cursors if anyone wants
>> to provide a sample.
>
> http://www.postgresql.org/docs/9.3/interactive/sql-fetch.html
Yea, I looked at those. Part of my original email got lost. Here is from the original
email:
> CREATE OR REPLACE FUNCTION blah() RETURNS integer AS $$
>
> DECLARE
> xyz CURSOR FOR SELECT * FROM shipped_files WHERE aix_file = '/usr/lib/drivers/vioentdd' AND service_pack =
'7100-01-06';
>
> BEGIN
> FOR my_rec IN xyz LOOP
> -- xyxyxy what to do where? xyxyxy These things don't work:
> COPY ( my_rec ) TO stdout;
> SELECT * FROM my_rec;
> etc.
> END LOOP;
>
> RETURN 5;
> END
> $$ LANGUAGE plpgsql;
>
> SELECT * FROM blah();
Perhaps my question is what do I do with my_rec once I have it? I want
output the same as if I did the top SELECT statement directly.