Re: Syntax Error
Igor Korot <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <CA+FnnTztaENy9XB=X_Hn1BCFTf7Bd-0LNGTCbaH3vBmiwTFj4Q@mail.gmail.com> |
Sorry one more thing: What is you DB version? On Tue, Dec 1, 2015 at 8:16 AM, Igor Korot <[email protected]> wrote: > Hi, > Couple of questions: > > On Sun, Nov 29, 2015 at 11:55 PM, Manasi Deshpande > <[email protected]> wrote: >> Hello, >> >> We are using UTF-8 encoding and it is char that we are using! We aren't using wide APIs on Linux! >> >> In the FreeTDS config file we are specifying the client charset as UTF-8. >> >> Strange thing I observed was after commenting the following code the SQLExecDirect executes with SUCCESS. > > 1. What did you observe? > >> >> // Specify the number of elements in each parameter array. >> TRYODBC(hStmt, SQL_HANDLE_STMT, SQLSetStmtAttr(hStmt, SQL_ATTR_PARAMSET_SIZE, (SQLPOINTER)idCount, 0)); > > 2. What is TRYODBC()? > >> >> // Specify an array in which to return the status of each set of >> // parameters. >> TRYODBC(hStmt, SQL_HANDLE_STMT, SQLSetStmtAttr(hStmt, SQL_ATTR_PARAM_STATUS_PTR, ParamStatusArray, idCount)); >> >> // Specify an SQLUINTEGER value in which to return the number of sets of >> // parameters processed. >> TRYODBC(hStmt, SQL_HANDLE_STMT, SQLSetStmtAttr(hStmt, SQL_ATTR_PARAMS_PROCESSED_PTR, &ParamsProcessed, 0)); >> >> >> Also another point to notice is that, I have recently updated from freetds-0.91 and TDS version 7.1. The code worked seamlessly then! > > 3. What is your current freeTDS version and TDS protocol? > > 4. Did you turn on logging on the ODBC side and inspected the it? What > did you see in both versions? > > Thank you. > >> >> Regards, >> Manasi >> >> -----Original Message----- >> From: FreeTDS [mailto:[email protected]] On Behalf Of Frediano Ziglio >> Sent: 27 November 2015 20:19 >> To: FreeTDS Development Group <[email protected]> >> Subject: Re: [freetds] Syntax Error >> >> 2015-11-27 10:21 GMT+00:00 Manasi Deshpande <[email protected]>: >>> Hello, >>> >>> Environment: >>> Ubuntu 14.04 >>> UnixOdbc-2.3.4 >>> Built and installed from freetds-0.95.69 and TDS version is 7.3 >>> >>> Issue: >>> In this we are trying to query DB with IDs to return a collection of items. >>> >>> RETCODE RetCode; >>> SQLSMALLINT sNumResults; >>> >>> int idCount = 0; >>> _INT64 *arrIds =ArrayOfIds.GetArray(); >>> U_stringstream idStr; >>> >>> idStr << _U("("); >>> >>> for (int i = 0; i < idCount; i++) >>> { >>> idStr << arrIds[i]; >>> if (i < idCount - 1) >>> idStr << _U(","); >>> } >>> >>> idStr << _U(")"); >>> U_STRING idString = idStr.str(); >>> >>> SQLUSMALLINT ParamStatusArray[2]; >>> SQLULEN ParamsProcessed; >>> >>> SQLHANDLE hStmt = dbCon.getStmtHandle(); >>> SQLHANDLE hConn = dbCon.getConnHandle(); >>> >>> >>> // Specify the number of elements in each parameter array. >>> TRYODBC(hStmt, SQL_HANDLE_STMT, SQLSetStmtAttr(hStmt, >>> SQL_ATTR_PARAMSET_SIZE, (SQLPOINTER)idCount, 0)); >>> >>> // Specify an array in which to return the status of each set of >>> // parameters. >>> TRYODBC(hStmt, SQL_HANDLE_STMT, SQLSetStmtAttr(hStmt, >>> SQL_ATTR_PARAM_STATUS_PTR, ParamStatusArray, idCount)); >>> >>> // Specify an SQLUINTEGER value in which to return the number of sets of >>> // parameters processed. >>> TRYODBC(hStmt, SQL_HANDLE_STMT, SQLSetStmtAttr(hStmt, >>> SQL_ATTR_PARAMS_PROCESSED_PTR, &ParamsProcessed, 0)); >>> >>> //Bind Parameters >>> //TRYODBC(hStmt, SQL_HANDLE_STMT, SQLBindParameter(hStmt, >>> 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, 0, 0, arrIds, 0, NULL)); >>> >>> U_STRING query = _U("SELECT query WHERE ITEM.Id in ") + >>> idString + _U(" ORDER BY ITEM.Id ASC"); >>> >> >> I would first try with an easy query like "SELECT 1" >> >>> RetCode = SQLExecDirect(hStmt, (SQLTCHAR*)query.c_str(), >>> SQL_NTS); >>> >> >> In which encoding the U_STRING store the string. No, Unicode is not enough (if you don't specify the version). >> >> From the code above query.c_str() should return a NUL-terminated string encoded in UTF-16 or UCS-2 format (endian machine dependent). >> >> Should not be SQLExecDirectW or did you enabled UNICODE define in Makefile/project file(s) ? >> >>> The Execute statement returns the following error information. >>> [FreeTDS][SQL Server]Incorrect syntax near >>> >>> Any help/inputs appreciated! >>> >>> Thanks, >>> Manasi >> >> Frediano >> _______________________________________________ >> FreeTDS mailing list >> [email protected] >> http://lists.ibiblio.org/mailman/listinfo/freetds >> -------------------------------------------------------------------------------------------------- >> This email and any attachments are confidential and are for the use of the >> addressee only. If you are not the addressee, you must not use or disclose the >> contents to any other person. Please immediately notify the sender and >> delete the email. Statements and opinions expressed here may not >> represent those of the company. Email correspondence is monitored by >> the company. This information may be subject to export control >> regulation. You are obliged to comply with such regulations. >> >> Renishaw plc (company number 1106260) and Wotton Travel Limited (company >> number 01973158) are companies registered in England and Wales with a registered office >> at New Mills, Wotton-under-Edge, Gloucestershire, GL12 8JR, >> United Kingdom, Telephone +44 1453 524524. >> -------------------------------------------------------------------------------------------------- >> _______________________________________________ >> FreeTDS mailing list >> [email protected] >> http://lists.ibiblio.org/mailman/listinfo/freetds