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