Skip to Content.
Sympa Menu

freetds - Re: [freetds] Are LOBs supported?

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Sebastien FLAESCH <sf AT 4js.com>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] Are LOBs supported?
  • Date: Tue, 08 Jan 2008 17:44:03 +0100

ZIGLIO, Frediano, VF-IT wrote:
Sebastien FLAESCH wrote:
SQLBindParameter(m_hstmt, 2, SQL_PARAM_INPUT,
SQL_C_BINARY,
SQL_LONGVARCHAR, 0x10000000, 0, buf2, 0,
&vind1);
CHECK_RCODE(SQL_HANDLE_STMT,m_hstmt,"SQLBindParameter 2");
Note that we have to bind the blob params with a large size for SQL Server
drivers, otherwise you can't insert into the database...

-> get SQLSTATE 07002 "COUNT field incorrect or syntax error" ... no idea why.

Other APIs like DB2 CLI don't need to pass a size in such case.

Don't know if this matters when using SQL_DATA_AT_EXEC with FreeTDS, but
wanted to warn you about this strange thing.

Note also that we use column-wise binding to fetch rows with:

SQL_ATTR_ROW_BIND_TYPE, SQL_BIND_BY_COLUMN

The test does not use this but our driver does, so if you fix this problem
I can continue to test with our driver code.

Thanks!
Seb

SQL_DATA_AT_EXEC is not supported. SQLGetInfo report this. Perhaps error
from our library is not correct but it's not easy to implement (i'll fix
error report ASAP). You can however use SQL_LEN_AT_EXEC witch require a
length and which should be even faster.

Ok will try the SQL_LEN_AT_EXEC way...

I noted also that in many
examples you bind parameters after SQLPrepare. I would suggest to bind
before. In many cases (using many drivers) it's faster.

Thanks for the tip, but actually we have to do SQLPrepare() before because
the basic SQL instructions in Informix 4gl are PREPARE, then EXECUTE with
parameter definition and values:

PREPARE s1 FROM "INSERT INTO tab VALUES( ?, ?, ? )" -- SQLPrepare()
EXECUTE s1 USING var1, var2, var3 -- SQLExecute()

...


I don't
understand how your example works... when does SQLPutData return
"done"??

Yep the sample is not very nice (sorry for that).

I think the while loop stops because rcode is reset by the line calling
SQLParamData().

while (rcode == SQL_NEED_DATA) {

Anyway, thanks a lot for you help.
I really appreciate.

Seb


freddy77
_______________________________________________
FreeTDS mailing list
FreeTDS AT lists.ibiblio.org
http://lists.ibiblio.org/mailman/listinfo/freetds






Archive powered by MHonArc 2.6.24.

Top of Page