I am converting my C++ application to 64-bit. The problem I am having has to do with Oracle calls. Any string (varchar2) parameter I pass to an Oracle procedure has a null character at the end. For example:
ProductionDB * pxDB = DBPool::pxGetDB();
pxDB->vResetParams();
pxDB->vSetProc(PROCNAME, 1);
pxDB->vSetInputParam(1, SQL_CHAR, “FIRST_NAME_SOUNDEX”);
pxDB->vExecuteProc();
In the example above, after debugging the Oracle procedure, I see that FIRST_NAME_SOUNDEX has a “\0” (NULL) character appended at the end. So, if I am trying to insert something in the database, I get a reject message that the value is too large for the column. This works with the 32-bit version of the application and 32-bit Oracle driver. Currently, I am using 64-bit version of the application (compiled in VS2010) and 64-bit Oracle driver 11.02.00.01. I have also tried the new driver 12.01.00.01, but it didn’t help.