Hi!

thanks for your response.

I found my mistake, you pointed me to the right direction.
Although I provide different pcbLength buffers for the parameters, I did not
initialize the second one.
ODBC documentation says, that it will be ignored on integer columns if its
not SQL_NULL_DATA.
But I should initialize it at least with 0. ;)

Next time I post to the appropriate list (myodbc) ;)

Frank

> -----Original Message-----
> From: Venu [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, March 11, 2003 11:03 PM
> To: Naumann, Frank
> Cc: '[EMAIL PROTECTED]'
> Subject: Re: MyODBC: SQLBindParameter mix DATA_AT_EXEC with 
> direct bound
> param eters
> 
> 
> On Mon, 2003-03-10 at 09:40, Naumann, Frank wrote:
> > Hi all,
> 
> Hi !!
> 
> > 
> > I found a problem (bug?) when updating a blob column via MyODBC. The
> > statement i run is like that:
> > 
> > UPDATE blob_table SET blob_col = ? where id = ?
> > 
> > when i do NOT bind the restriction as input parameter, but 
> write it directly
> > in the string, it works perfectly.
> > 
> > but when i want to bind the restriction directly, the 
> following happens:
> > 
> > 1. I bind the blob_col with SQL_LEN_DATA_AT_EXEC(length) as 
> indikator
> > (SQLBindParameter returns SQL_SUCCESS)
> > 2. I bind the id restriction directly to a program variable
> > (SQLBindParameter returns SQL_SUCCESS)
> > 3. I call SQLExecute, it returns SQL_NEED_DATA as expected.
> > 4. I call SQLParamData to access the blob_col, it returns 
> also SQL_NEED_DATA
> > as expected.
> > 5. I call several times SQLPutData to fill the blob_col, 
> each returns with
> > SQL_SUCCESS
> > 6. I call SQLParamData to indicate that the blob_col is 
> populated with data
> > completely and would expect SQL_SUCCESS.
> 
> I just tested it, and it returns SQL_SUCCESS unless if you have more
> parameters data to be supplied during the run-time. 
> 
> Possible reason could be, you might have specified the same pcbLength
> buffer to all parameters in SQLBindParameter.
> 
> Here is a simple snippet from the test suite for the similar case:
> 
> ..
> ..
> rc = SQLPrepare(hstmt,"update t_putdata set c2= ? where c1 =
> ?",SQL_NTS);
> mystmt(hstmt,rc);
> 
> rc = SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,
>                       SQL_LONGVARCHAR,0,0,
>                       (SQLPOINTER)1,0,&pcbLength);
> 
> rc = SQLBindParameter(hstmt,2,SQL_PARAM_INPUT,SQL_C_LONG,
>                       SQL_INTEGER,0,0,&c1,0,NULL);
> 
> pcbLength =  SQL_LEN_DATA_AT_EXEC(0);
> 
> c1 = 10;
> rc = SQLExecute(hstmt);
> myassert(rc == SQL_NEED_DATA);
> 
> rc = SQLParamData(hstmt, &token);
> myassert(rc == SQL_NEED_DATA);
> 
> strcpy(data,"mysql ab");
> rc = SQLPutData(hstmt,data,6);
> mystmt(hstmt,rc);
> 
> strcpy(data,"- the open source database company");
> rc = SQLPutData(hstmt,data,strlen(data));
> mystmt(hstmt,rc);
> 
> rc = SQLParamData(hstmt, &token);
> mystmt(hstmt,rc);
> 
> SQLFreeStmt(hstmt, SQL_RESET_PARAMS);
> SQLFreeStmt(hstmt, SQL_CLOSE);
> 
> ..
> ..
> 
> The data updated is:
> 
>  data: mysql - the open source database company(40)
> 
> Thanks
> 
> -- 
> Regards, Venu
> For technical support contracts, go to https://order.mysql.com
>    __  ___     ___ ____  __
>   /  |/  /_ __/ __/ __ \/ /   Mr. Venu <[EMAIL PROTECTED]>
>  / /|_/ / // /\ \/ /_/ / /__  MySQL AB, Developer
> /_/  /_/\_, /___/\___\_\___/  Palo Alto, CA-94306, USA
>        <___/  www.mysql.com
> 
> Join MySQL Users Conference and Expo:
> http://www.mysql.com/events/uc2003/
> 

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to