I'm running stored procedures in Oracle and I appear to be coming up against some limitations, both in number of records I can return and the length of those records.

I'm using the following syntax as the CommandText:
{call get_details(?, ?, ?, {resultset 200, o_faq_id, o_faq_qstn, o_faq_answr, o_faq_ver_seq_nr, o_faq_desc_txt})}
That 200 is the number of records I want returned. That seems to be a requirement when doing this sort of thing (?). However, if I increase that to a large enough number, I get an error. For example, putting 12000 in gives me:

ORA-01044: size 36000000 of buffer bound to variable exceeds maximum 4194304
This appears to be based on the number of output columns in the cursor coming back from the sp, or the lengths thereof.

Also, in this case, the o_faq_qstn and o_faq_answr are VARCHAR2(4000) types but at this length, my ASP.NET returns an error too.

The data value could not be converted for reasons other than sign mismatch or data overflow.
For example, the data was corrupted in the data store but the row was still retrievable.
Reducing one to a length of 1000 makes it work fine.

So are there limitations on both the record length and number of records being returned by Oracle? Is there any documentation available on this sort of thing? I've only been using Oracle for a couple weeks, and all of this seems a bit peculiar to me.