Обсуждение: Stored Procedure Trouble

Поиск
Список
Период
Сортировка

Stored Procedure Trouble

От
wheelerj@lexmark.com
Дата:

I have written a stored procedure in C that opens a file and returns it as a
varchar.  The file is 1.5M in size.  I then execute the stored procedure with
the following SQL.


SELECT name, GetFile() AS Test FROM dummy WHERE name = 'One';


When I do this on my Unix system via the Perl DBI it works perfectly.

When I do the same on my Windows machines via Borland C++ Builder and
the ODBC driver, two things go wrong.

1) The Query object used to invoke the SQL indicates that no records were
returned.

This seems to be a problem when any stored procedure is trigger by a SELECT
statement
regardless of the data returned.  I have another stored procedure that returns
a single BYTE and it fails in the same manner.  However, querries that do not
invoke
stored procedures set the RecordCount property of the C++ Builder TQuery object
correctly.


2) The data returned is truncated to 32769 BYTES when it should be 1.5M.

I have tried modifying various settings in the driver, but nothing I have
changed seems to
have any effect.

Thanks in advance for the help.

I am running version 7.2 of PostgreSQL on Solaris 5.8.
I have the most recent version of the ODBC driver.
I am running version 5.0 of C++ Builder Professional on a Windows 2000 box.


Jim



Re: Stored Procedure Trouble

От
"Hiroshi Inoue"
Дата:
> -----Original Message-----
> From: wheelerj@lexmark.com
>
> I have written a stored procedure in C that opens a file and
> returns it as a
> varchar.  The file is 1.5M in size.  I then execute the stored
> procedure with
> the following SQL.
>
>
> SELECT name, GetFile() AS Test FROM dummy WHERE name = 'One';
>
>
> When I do this on my Unix system via the Perl DBI it works perfectly.
>
> When I do the same on my Windows machines via Borland C++ Builder and
> the ODBC driver, two things go wrong.
>
> 1) The Query object used to invoke the SQL indicates that no records were
> returned.
>
> This seems to be a problem when any stored procedure is trigger
> by a SELECT
> statement
> regardless of the data returned.  I have another stored procedure
> that returns
> a single BYTE and it fails in the same manner.

Could you send me the Mylog(Debug) output for the single
BYTE case(not 1.5M case) ?

> 2) The data returned is truncated to 32769 BYTES when it should be 1.5M.
>
> I have tried modifying various settings in the driver, but nothing I have
> changed seems to
> have any effect.

Are you checking *Text as LongVarcChar* option ?
Are you setting *Max LongVarChar* large enough ?

32769 isn't a restriction of the ODBC drvier.
If you are setting the above options properly,
I'm afraid it's a restriction of Borland C++ Builder.

regards,
Hiroshi Inoue