Oracle ODBC Driver adds bind variable when browsing whole table in Access

Hi, we are looking for some reasons why we may see this behavior in the Oracle ODBC driver (10gR2 and 11g) when using Microsoft Access (2003 or 2007)...
1) Link a table from the Oracle database.
2) Double-click the newly linked table to "browse" it.
Oracle sends the following statement to the server:
{color:#0000ff}select * from linked_table where primary_key = :b1{color}
It then proceeds to read the entire table.
If I tell Microsoft Access that there is no primary key, the query gets sent as:
{color:#0000ff}select * from linked_table{color}
And the query comes back as soon as the first 100 or so rows are fetched which is quite quickly.
ADDITIONAL NOTES:
1) If the table has a primary key or unique constraint, Microsoft Access automatically assigns that as the primary key.
2) We can stop the behavior in #1 if we wrap a view around it which prevents Access from discovering that information and then it prompts for a primary key definition.
3) If we use the Microsoft ODBC driver, the bind variable is not added no matter what the primary key defintiion is.
We're stumped and are looking for solutions and/or workarounds without having to wrap all of our tables in views to hide the fact that there is a primary key.
Thanks,
Steve

Thanks for the response, Greg.
The specific question I am seeking an answer for (sorry it was not clear on my first message) is this:
Why does the Oracle driver add the bind variable to the query only when the primary key is defined?
The Microsoft ODBC driver does not add the bind variable with or without a primary key defined.
You asked how I traced this statement and what I am doing is launching the query in Access and then using TOAD to view the V$SESSION and V$SQL_TEXT_WITH_NEWLINES views. All I do is change the driver. This is just for a simple browse table (double-click on the table) which should send
select * from table
However, whenever I use the Oracle ODBC driver (with a primary key defined) it sends
select * from table where primary_key = :1
If I remove the primary key on the table definition, the Oracle driver sends
select * from table
What is it about the primary key that could cause that behavior?
I don't think it is the MDAC/Jet level because this is the conversion to the native SQL statement not the Jet version. I know the Oracle driver has to do that part because you have those workaround options like don't add the RULE hint, etc. That's not part of the Jet engine.
Hope that helps. I'm just baffled over this one and wish I knew where to go next.

Similar Messages

  • Memory Leak when I get the SP return refcursor by oracle ODBC driver:

    Oracle server:HP-Unix
    Oracle Version: 9.2.0.6.0
    Application Server: windows2003
    Develop tool : VC++;
    Question:
    when I get the return refcursor by OLEDB.Oracle, there is not any memory leak and work well. But when I change the driver to ODBC “Oralce in OraHome92"
    there will be an 56k memory leak.
    And in the other hand if I call an store precedure without return ref. Both driver /way can work well.
    Can you give me the advice? thanks a lot.
    Code such as:
    _ConnectionPtr m_AdoConnection;
    _CommandPtr pcmd = NULL;
    _RecordsetPtr sp_rs = NULL;
    _bstr_t bstrConstruct = _bstr_t("DSN=test;Uid=test;Pwd=test;PLSQLRSet=1");
    HRESULT hr = CoCreateInstance(__uuidof(Connection),NULL,CLSCTX_INPROC_SERVER,__uuidof(_ConnectionPtr),(LPVOID *)&m_AdoConnection);
    if (FAILED (hr) ) throw hr ;
    m_AdoConnection->PutCursorLocation(adUseClient) ;
    m_AdoConnection->IsolationLevel = adXactSerializable;
    m_AdoConnection->Mode = adModeShareExclusive;
    bstr_t bstrEmpty(L"") ;
    m_AdoConnection->Open (bstrConstruct, bstrEmpty, bstrEmpty, -1) ;
    SAFE_CALL(m_spObjectContext->CreateInstance(__uuidof(Command),__uuidof(_CommandPtr),(LPVOID *)&pcmd));
    if(pcmd == NULL)
    throw CAtlExceptionEx(E_POINTER,"pcmd is NULL");
    pcmd->CommandText = _bstr_t(L"wec_pkg_spl.wec_proc_spl_check");
    pcmd->CommandType = adCmdStoredProc;
    _bstr_t id = _bstr_t("65650000");     
    pcmd->Parameters->Append(pcmd->CreateParameter(_bstr_t(L"id"),DataTypeEnum(adVarChar),adParamInput,2000,_variant_t(id)));          
    pcmd->Parameters->Append(pcmd->CreateParameter(_bstr_t(L"errcode"),DataTypeEnum(adNumeric),adParamOutput,4));
    pcmd->Parameters->Append(pcmd->CreateParameter(_bstr_t(L"errdescription"),DataTypeEnum(adVarChar),adParamOutput,2000));
    pcmd->ActiveConnection = sp_con.m_AdoConnection;
    sp_rs = pcmd->Execute(NULL,NULL,adCmdStoredProc);
    pcmd->Release;          
    sp_rs->Close();     
    if (m_AdoConnection->State == adStateOpen)
    m_AdoConnection->Close();
    wec_pkg_spl.wec_proc_spl_check arguments:
    id          varchar2     in
    flowpaths     ref cursor     out
    errcode          number          out
    errdescription     varchar2     out
    Message was edited by:
    [email protected]

    I'm using the oracle ODBC driver 8.05.10 with MFC and client version 8.0.5. In my experience you can't prevent memory leaks with that or earlier versions of the ODBC driver. Client patchkits or service packs for NT or the Visual Studio doesn't solve the problem.
    The following code will result in a memory leak with the oracle driver. With every expiration of the timer the leak will grow.
    void CTestOdbcOracleDriverDlg::OnTimer(UINT nIDEvent)
    TCHAR errString[255];
    //open the database with class CDatabase
    //use of CRecordset
    TRY {
    //my table name is AL_ALARME_LOG
    pMyRecordset->Open(CRecordset::dynaset,"SELECT * FROM AL_ALARME_LOG",CRecordset::none);
    //do something with the data
    Sleep(0);
    pMyRecordset->Close();
    CATCH_ALL(error) {
    error->GetErrorMessage(errString,255);
    DELETE_EXCEPTION(error);
    END_CATCH_ALL
    CDialog::OnTimer(nIDEvent);
    The same code with the Microsoft ODBC driver
    doesn't cause memory leaks.
    Andreas ([email protected])

  • Errors when installing Oracle ODBC driver

    I've been trying to install the Oracle ODBC driver version 9.2 but each and every time I tried I am getting the following error messages that are preventing the Universal Installer to install it:
    There was an error loading the following libraries:
    areasQueries
    After I hit ok, another message pops:
    There was an error loading the following libraries:
    WindowGeneralQueries
    Does anyone have an idea on how to resolve this problem? I tried downloading from the otn web site various 9.2 releases, 9.2.0.2, 9.2.0.5 and 9.2.0.5.4 but all of them are giving me the same error message. I even uninstalled and reinstalled the JRE but still the same problem occurred.

    When you install the Oracle client, a base version of the Oracle ODBC driver will be installed by default (you could customize the install not to install ODBC). Before we tackle the ODBC driver patchset instll, I'd like to make sure that the basic client software installed correctly.
    - Were there any errors thrown when you tried to install the 9.2 Oracle client?
    - Once you installed the Oracle client, were you able to connect to databases via SQL*Plus?
    - Is the Oracle ODBC driver on the list of ODBC drivers in the ODBC Data Source Administrator?
    - Can you connect to databases via the base version of the ODBC driver?
    Justin
    Distributed Database Consulting, Inc.
    www.ddbcinc.com/askDDBC

  • Oracle ODBC driver and TIMESTAMP with timezone

    Does anyone know if it is possible to return data from a "TIMESTAMP WITH TIMEZONE" column using the Oracle ODBC driver and an ADO Recordset?
    I am using the Oracle driver version 10.2.0.2 and TIMESTAMP fields work fine.
    I can call Recordset->Open() with a query like "SELECT * FROM TABLE" when the table contains a column of type timestamp with timezone but when I execute a statement to see if there are results as in
    if (!(srcRecsetPtr->BOF && srcRecsetPtr->EndOfFile))
    my application throws an unhandled exception and exits. The exception is not a COM exception and I'm not sure how to get back additional information if that's possible.
    The only information I've been able to find in searching TechNet and MetaLink is that a workaround is to wrap the columns in a TO_CHAR or TO_DATE conversion first but that's not a good solution for my problem since I am executing user specified SQL which may join multiple tables.
    I've found one other note that says the documentation should be corrected and that these fields are NOT supported period (Bug #4011640).
    I've experimented with the Bind Timestamp as Date option in the ODBC connection and with various ALTER SESSION settings to attempt to change the NLS_TIMESTAMP_TZ_FORMAT but I have been unable to get past the problem.
    Any ideas are greatly appreciated.
    Thanks,
    Troy

    Hi Justin
    Thanks for your help.
    I tried what you mentioned and I could connect myself via SQL*Plus without passing a password and a login, Extern authentification seems to work and my user seems to be right configurated.
    But he problem goes on via ODBC. When I test connection in the ODBC Data Source Administrator of Windows XP, test fails and seems to forbid connection without userID and password. When I try to connect via ODBC in my program the same problem appears : "Unable to connect SQLSTATE=28000 [Oracle][ODBC][ORA]Ora-01017: Invalid username/password;logon denied" I could not connect in this way.. What's wrong ?

  • Slow performance in W2K using Oracle ODBC Driver

    My company is upgrading our NT4 servers to W2K. One or our App servers is running MTS with several packages, one of those being a dataaccess package that is responsible for all data actions.
    In testing the OS upgrade, I found considerable performance degradation with our data access package. I finally solved the problem by changing the ODBC driver from Oracle ODBC Driver to the Microsoft ODBC for Oracle Driver. I have also found that under XP, I can still retain the use of the Oracle ODBC Driver without any performance hits.
    All systems currently have the 8.1.7 Oracle Client and MDAC 2.7. I have also tried the Oracle Objects for OLE with similar performance losses in W2K.
    More info about the problem...
    In using the Oracle ODBC Driver, I connect this way -
    Dim RS As ADOR.Recordset
    Set RS = CreateObject("ADOR.Recordset")
    RS.ActiveConnection = "DSN=" & p_strDSN & ";" & "uid=" & strUser & ";pwd=" & strPassword & ";"
    RS.Source = "Select stuff from aTable"
    RS.LockType = adLockReadOnly
    RS.Open
    Using W2K, I found that the majority of processing time comes from the RS.ActiveConnection call, not from object creation.
    I would like to use an Oracle developed driver to connect to my database, however, I am forced to use the Microsoft driver. I have not seen any similar problem on this message board, nor have I seen any mention of this in MSDN's discussion board. Can anyone shed some light on what is going on?
    Thanks,
    Matt

    The performance lag we have been seeing is in the milliseconds, but when we make repeated calls, those milliseconds add up. I am seeing a difference of about 7 - 10 milliseconds each call between the Oracle ODBC Driver and the Microsoft driver.
    TNSPings seem quick in all setups as does the connection tests.
    The Oracle ODBC driver version is 8.01.07.00. I haven't tried the new 8.01.07.6+ drivers yet. I'll give them a shot and reply back with results in a day or so.

  • How to install Oracle ODBC driver...?

    TOM,
    Presently, I have oracle client version. But there no Oracle ODBC driver in my PC. But, I want to install only Oracle ODBC driver in my PC for ODBC Connectivity purpose.
    How to install & where can get the source?

    I found out the real answer!!!
    On another thread there was a link to the client 10g installation. I download that 480Meg monster. Unzipped the package and launced the setup.exe.
    You can then install just the ODBC using the custom option. But, it will not install the tnsnames.ora file. If you have ever done this from a VB app, copy the tsnnames.ora over to the \network\admin folder. It's usually under the oracle\product\client\10.0.2\ folder. Once installed you can launch the ODBC administer either from the link Oracle installs or from the control panel.
    Next, you need to make sure the folders where the .dll file is readable to the iis. Change the folder to add whatever permission group you use for iis (I happen to have setup a local users group {machinename\users}. Add them to the entire folder structure (check the embedded folders to ensure they are readable).
    While setting up the ODBC, the TSN names will now be listed from the tsnnames.ora file (if properly located). To make the connection work, the userid should be 'userid;pwd=password'. Otherwise the connection failed for me.
    Now, if your connection works okay from the odbc test connection, it will probably fail if accessing through iis (like from a .asp page). There are environment path variables that need to be set. Reboot the server for them to get set. Otherwise you will get a ODBC driver can not be loaded do to system error 1114 message.

  • Oracle ODBC driver with Access Application

    I get a problem when using MS-Access 2007 DAO recordset built on table hosted by an Oracle database 10g and connected thru ODBC
    The table scheme is :
    idPartenaire : number(11)
    libelle : varchar2(250)
    code : varchar2(5)
    actif : number(1)
    idCollege :numner(11)
    idPartenaire is generated by a sequence read in a trigger fired before insert on th table.
    The code I use in Access is :
    The query associated with the form is :
    "select * from table1"
    and the event procedure connected to a button on the form is :
    Private Sub Commande0_Click()
    Dim rs As DAO.Recordset
    Me.Recordset.AddNew
    Me.Recordset!libelle = CStr(Rnd) ' some value
    Me.Recordset!code = “”
    Me.Recordset!actif = -1
    Me.Recordset!idCollege = 1
    Me.Recordset.Update
    Me.Recordset.Bookmark = Me.Recordset.LastModified
    Dim idtemp As Long
    idtemp = Me.Recordset.idPartenaire
    Me.Requery
    Me.Recordset.FindFirst "idPartenaire = " & idtemp
    Set rs = Nothing
    End Sub
    When I run this code, I get an error 3167 (current record is deleted) on the line :
    idtemp = Me.Recordset.idPartenaire
    If I change the ligne :
    Me.Recordset!code = “”
    By :
    Me.Recordset!code = “xxxx”
    or if I comment this line, the error does not appear and I get the right value in idtemp variable.
    I tried also with the same table in a SQL Server database table. In this case it works fine in all cases.
    So, I seems that the problem is due to the Oracle ODBC driver. I tried with different versions of Oracle ODBC drivers (v10.0.2.4, v11.1.6)
    I search on Internet but I have not found any explanation or solution.
    Does anybody experiment the same problem (and find a solution)?
    Gilles Roussel.

    The two lines you quote aren't errors, they're warnings and they're pretty standard fare. If there isn't anything else in the ODBC log, then the driver isn't returning any errors. I'm not sure why Access is failing, so let's look at the client configuration first.
    - I assume you've successfully installed the 8.1.6 client on the machine with Access. Were there any errors during the install?
    - You say you're using the 8.1.6 version of the Oracle ODBC driver-- can you look to see what the last digit of the version is? If possible, I'd start by downloading the most recent 8.1.6.x ODBC driver from OTN.
    - Check which version of the MDAC you have installed (new versions & a version checker are available from Microsoft at <http://www.microsoft.com/data>.
    - The ODBC driver you download above will list which versions of the MDAC it is expected to work with. Make sure your version is one of the listed versions.
    Justin

  • MS ODBC or Oracle ODBC driver?

    Can anyone tell me which is the correct driver to use when developing front end MS Access 2003 to retrieve and update data on a Open VMS platform with Oracle 8.1.7.3 database?
    I have serval Access 2000 databases that run on most WinNT or W2K clients with a couple of W2K Dell exceptions. These Access 2000 db's connect to the Oracle database using linked tables and SQL pass-through queries that work with ODBC Manager-DNS system setup using the Microsoft for Oracle ODBC driver.
    Now we are upgrading to Office Pro 2003 so new W2K images have been setup with Oracle 8.1.7 Client. SQL*Plus works on these clients but when I create the System DNS the Access databases return an error "ODBC connection failed". I can however connect with a pass-through query using Oracle's ODBC driver. Not enough time in roll-out plan to change the ODBC connection string in hundreds of Access SPT queries.
    Please help!
    Bonnie

    if you still need assistance reagarding this...email me directly..
    shah
    null

  • Insert into CLOB fails with Oracle ODBC driver version 9.02.00.65

    I tried to insert into CLOB using the latest Oracle ODBC driver 9.02.00.65 and it fails. But the same works with earlier versions of ODBC driver earlier to 9.02.00.65 ie., 9.02.00.63.
    Here is the code snippet I tried. Any help now is highly appreciated as I am in the crunch time.
    I tried the same code snippet with VARCHAR2 column with the same driver and it works.
    ** CONVDSN.C - This is the ODBC sample code for
    ** creating File DSN pointers to machine DSNs.
    **This code is furnished on an as-is basis as part of the ODBC SDK and is
    **intended for example purposes only.
    #include <windows.h>
    #include <stdio.h>
    #include <tchar.h>
    #include <sql.h>
    #include <sqlext.h>
    #include <odbcinst.h>
    #include <sqltypes.h>
    #define MAXDATALEN 25 //maximum data length per column
    #define MAX_COL 15 //maximum column in result set
    #define MAX_ROW 100 //maximum number of rows
    #define MAXBUFLEN 256
    #define SQLERR_FORMAT "SQL Error State:%s, Native Error Code: %lX, ODBC Error: %s"
    #define MAXDISPLAYSIZE MAX_COL*(MAXDATALEN+1)
    #define SQLWRNMSGTITLE "SQL_SUCCESS_WITH_INFO results"
    #define SQLERRCNTDTITLE "SQL_ERROR results continued"
    #define SQLWRNMSGTITLE "SQL_SUCCESS_WITH_INFO results"
    #define SQLWRNCNTDTITLE "SQL_SUCCESS_WITH_INFO results continued"
    #define NULLDATASTRING "SQL_NULL_DATA"
    #define SQLERRMSGTITLE "SQL_ERROR results"
    // prototypes
    void ExpandFileName(LPSTR szFileDSNName, LPCSTR szDSNName);
    void MakeLegalName(LPSTR szLegalDSNName, LPCSTR szDSNName);
    // main routine: Iterate through the user and system DSNs, creating a pointer
    // to each.
    void FAR PASCAL DisplayError(SQLRETURN nResult, HWND hWnd, SWORD fHandleType, SQLHANDLE handle);
    void insertSelectClob();
    void checkRcCode(RETCODE rc);
    int main (int argc, char* argv[])
         insertSelectClob();
    return 0;
    void FAR PASCAL DisplayError(SQLRETURN nResult, HWND hWnd, SWORD fHandleType, SQLHANDLE handle)
         UCHAR szErrState[SQL_SQLSTATE_SIZE+1]; // SQL Error State string
         UCHAR szErrText[SQL_MAX_MESSAGE_LENGTH+1]; // SQL Error Text string
         char szBuffer[SQL_SQLSTATE_SIZE+SQL_MAX_MESSAGE_LENGTH+MAXBUFLEN+1];
         // formatted Error text Buffer
         SWORD wErrMsgLen; // Error message length
         UDWORD dwErrCode; // Native Error code
         int iSize; // Display Error Text size
         SQLRETURN nErrResult; // Return Code from SQLGetDiagRec
         SWORD sMsgNum = 1;
         SWORD fFirstRun = TRUE;
         char szDispBuffer[MAXDISPLAYSIZE+1]; // Display Buffer
         szBuffer[0] = '\0';
         do
              // continue to bring messageboxes till all errors are displayed.
              // more than one message box may be reqd. as err text has fixed
              // string size.
              // initialize display buffer with the string in error text buffer
              strcpy(szDispBuffer, szBuffer);
              // call SQLGetDiagRec function with proper ODBC handles, repeatedly until
              // function returns SQL_NO_DATA. Concatenate all error strings
              // in the display buffer and display all results.
              while ((nErrResult = SQLGetDiagRec(fHandleType, handle, sMsgNum++,
                   szErrState, &dwErrCode, szErrText,
                   SQL_MAX_MESSAGE_LENGTH-1, &wErrMsgLen)) != SQL_NO_DATA)
                   if(nErrResult == SQL_ERROR || nErrResult == SQL_INVALID_HANDLE)
                   break;
                   wsprintf(szBuffer, SQLERR_FORMAT, (LPSTR)szErrState, dwErrCode, (LPSTR)szErrText);
                   iSize = strlen(szDispBuffer);
                   if (iSize && (iSize+strlen(szBuffer)+1) >= MAXDISPLAYSIZE)
                   break;
                   if (iSize)
                   strcat(szDispBuffer, "\n");
                   strcat(szDispBuffer, szBuffer);
              // display proper ERROR or WARNING message with proper title
              if (nResult == SQL_SUCCESS_WITH_INFO)
                   MessageBox(hWnd, szDispBuffer, (fFirstRun? SQLWRNMSGTITLE : SQLWRNCNTDTITLE),
                   MB_OK | MB_ICONINFORMATION);
              else
                   MessageBox(hWnd, szDispBuffer, (fFirstRun? SQLERRMSGTITLE : SQLERRCNTDTITLE),
                   MB_OK | MB_ICONEXCLAMATION);
              if (fFirstRun)
                   fFirstRun = FALSE;
         while (!(nErrResult == SQL_NO_DATA || nErrResult == SQL_ERROR || nErrResult == SQL_INVALID_HANDLE));
    void insertSelectClob()
    SQLCHAR clobdata[1001];
    SQLCHAR resultdata[1001];
    SQLINTEGER ind = SQL_DATA_AT_EXEC;
    SQLCHAR *bufp;
         SQLINTEGER cbOrderID = sizeof(SQLSMALLINT);
         SQLSMALLINT sTmp=13;
         SQLCHAR *sqlStmt1  = _T("INSERT INTO clobtbl(id, clob1) VALUES(?, ?)");
         SQLCHAR *sqlStmt2  = _T("SELECT id, clob1 FROM clobtbl");
    //     SQLCHAR *sqlStmt1  = _T("INSERT INTO testInsert(id, clob1) VALUES(?, ?)");
    // SQLCHAR *sqlStmt2  = _T("SELECT id, clob1 FROM testInsert");
    int clobdatalen, chunksize, dtsize, retchklen;
         HENV envHnd;
    HDBC conHnd;
    HSTMT stmtHnd;
    RETCODE rc;
         int nRowcnt=0;
         SQLPOINTER pToken = NULL;
    rc = SQL_SUCCESS;
    // ENV is allocated
    rc = SQLAllocEnv(&envHnd);
    // Connection Handle is allocated
    rc = SQLAllocConnect(envHnd, &conHnd);
    rc = SQLConnect(conHnd, T("testd734"), SQLNTS, T("ipathdba"), SQLNTS, T("ipathdba"), SQLNTS);
    printf(_T("Insert CLOB1 using SQLPutData...\n[%s]\n"), sqlStmt1);
    // Set CLOB Data
    int i;
    SQLCHAR ch;
    for (i=0, ch=_T('A'); i< sizeof(clobdata)/sizeof(SQLCHAR); ++i, ++ch)
    if (ch > _T('Z'))
    ch = _T('A');
    clobdata[i] = ch;
    clobdata[sizeof(clobdata)/sizeof(SQLCHAR)-1] = _T('\0');
    clobdatalen = lstrlen(clobdata); // length of characters
    chunksize = clobdatalen / 7; // 7 times to put
         rc = SQLAllocHandle(SQL_HANDLE_STMT, conHnd, &stmtHnd);
    // Step 1: Prepare
    rc = SQLPrepare(stmtHnd, sqlStmt1, SQL_NTS);
    // checkSQLErr(envHnd, conHnd, stmtHnd, rc);
    // Step 2: Bind Parameter with SQL_DATA_AT_EXEC
    rc = SQLBindParameter(stmtHnd,
    1,
    SQL_PARAM_INPUT,
    SQL_C_SSHORT,
    SQL_INTEGER,
    0,
    0,
    &sTmp,
    0,
    &cbOrderID);
    rc = SQLBindParameter(stmtHnd,
    2,
    SQL_PARAM_INPUT,
    SQL_C_CHAR,
    SQL_LONGVARCHAR,
    clobdatalen*sizeof(CHAR),
    0,
    (SQLPOINTER)clobdata,
    clobdatalen*sizeof(CHAR),
    &ind);
    // checkSQLErr(envHnd, conHnd, stmtHnd, rc);
    // Step 3: Execute
    rc = SQLExecute(stmtHnd);
         while (rc == SQL_NEED_DATA) {
              rc = SQLParamData(stmtHnd, &pToken);
              if (rc == SQL_NEED_DATA) {
                   for (dtsize=0, bufp = clobdata;
                        dtsize < clobdatalen;
                        dtsize += chunksize, bufp += chunksize)
                   int len;
                   if (dtsize+chunksize < clobdatalen)
                        len = chunksize;
                        rc = SQLPutData(stmtHnd, bufp, len*sizeof(SQLCHAR));
                   else
                        len = clobdatalen-dtsize;
                        rc = SQLPutData(stmtHnd, bufp, SQL_NTS);
              rc = SQLParamData(stmtHnd, &pToken);
    // Fails as row count retrieved is zero.
         rc = SQLRowCount(stmtHnd, &nRowcnt);
         if(rc != SQL_SUCCESS)
              DisplayError(rc, NULL, SQL_HANDLE_ENV, conHnd);
    rc = SQLFreeStmt(stmtHnd, SQL_CLOSE);
    printf(_T("Finished Update\n\n"));
    rc = SQLAllocStmt(conHnd, &stmtHnd);
    if (rc != SQL_SUCCESS)
    printf(_T("Failed to allocate STMT\n"));
    exit(-1);
    // Clear Result Data
    memset(resultdata, 0, sizeof(resultdata));
    chunksize = clobdatalen / 15; // 15 times to gut
    rc = SQLExecDirect(stmtHnd, sqlStmt2, SQL_NTS); // select
         if(rc != SQL_SUCCESS)
              DisplayError(rc, NULL, SQL_HANDLE_ENV, conHnd);
    // Step 2: Fetch
    rc = SQLFetch(stmtHnd);
    for(dtsize=0, bufp = resultdata;
    dtsize > sizeof(resultdata)/sizeof(CHAR) && rc != SQL_NO_DATA;
    dtsize += chunksize-1, bufp += chunksize-1)
    int len; // len should contain the space for NULL termination
    if (dtsize+chunksize<sizeof(resultdata)/sizeof(CHAR))
    len = chunksize;
    else
    len = sizeof(resultdata)/sizeof(CHAR)-dtsize;
    // Step 3: GetData
    rc = SQLGetData(stmtHnd,
    2,
    SQL_C_CHAR,
    (SQLPOINTER)bufp,
    len*sizeof(CHAR),
    &retchklen);
    if (!_tcscmp(resultdata, clobdata))
    printf(_T("Succeeded!!\n\n"));
    else
    printf(_T("Failed!!\n\n"));
         if (conHnd)
              SQLFreeConnect(conHnd);
         if (envHnd)
              SQLFreeEnv(envHnd);
    }

    Hi,
    Since 9.2 has been desupported for error correction you will not be able to download that version from OTN. You should ask whoever is providing the training if their is an alternate version you can use. The only versions that you will be able to download from oracle.com is 10.2 11.1, and 11.2.

  • How to select active Oracle ODBC Driver programmatically?

    Hi,
    My application creates ODBC DSN to connect with Oracle 10g database server. I need to find out Oracle Driver installed on the system programmatically. I am trying to read KEY_<PRODUCT NUMBER> registry key and eventually searching ORACLE_HOME value. This helps me in searching Oracle Driver in ODBCINST.INI registry key. (Oracle in OraDb10g_home1)
    If multiple Oracle clients are installed on the same system, multiple KEY_<PRODUCT NUMBER> registry keys and oracle drivers would be available. I am not sure which and how to select the current active oracle driver.
    Oracle in OraDb10g_home1
    Oracle in OraDb10g_home2
    Can anybody help me out? Can I use inventory file (inventory.xml) to determince current active home directory? Reading PATH environment variable to identity active home directory would be tedious.

    Please look at following thread for answer.
    How to select active Oracle ODBC Driver programmatically?

  • Oracle ODBC Driver 8.1.7.8b causing MFC OpenEx() delay

    Hi:
    I have installed the Oracle ODBC Driver version 8.1.7.8b on a WINNT 4.0 Workstation with SP6a. I have an MFC test app with the following code:
    PostStatus(ERROR_NOERROR, APP_NAME, "Calling OpenEx()");
    CDatabase db;
    if(db.OpenEx(_T("DSN=MYTESTDSN;UID=USERID;PWD=PASSWORD"), CDatabase::openReadOnly|CDatabase::noOdbcDialog))
         PostStatus(ERROR_NOERROR, APP_NAME, "OpenEx() success,calling Close()");
         db.Close();
    } // OpenEx()
    else // OpenEx() error
         PostStatus(ERROR_MODERATE, APP_NAME, "Error opening database,OpenEx() failed!");
    The above OpenEx call is taking upto 3 seconds to return. When I use Microsoft Oracle ODBC driver, it takes less than 0.5 sec to connect/disconnect.
    Any idea why OpenEx() is taking that long? I've compiled this using VC++ 6.0 SP5, on a WIN2K and WINNT system but I get the same result.
    Thanks,
    Amit.

    This forum is for feedback about the OTN program and problems with OTN accounts. Technical questions cannot be answered here. Please post your question in the appropriate product or technology forum. http://forums.oracle.com/forums/index.jsp?cat=48

  • What means Rdb in "Oracle ODBC Driver for Rdb" ...

    ... I assume data basse but what about the upper R ? ^^
    thanks

    oh ok thanks, for OpenVMS platforms only and R as "relational" oki doki
    I'm surprise that, when I'm looking for the oracle odbc driver 8, I find almost only result for Rdb, is it not compatible with a windows standard edition as 2000, xp ...

  • Oracle ODBC Driver 10.02.00.04 sqora32.dll with /*+ RULE */ base hints

    Hi Everybody,
    I have a problem with SQL queries with /*+ RULE */ base hints being posted to an Oracle database. I have reason to believe that these queries are generated by the Oracle ODBC Driver itself. Although I don't have a performance problem per se, I need to reduce these hints to a minimum so we can fine-tune the database as a whole.
    * The views that are hit are always the same: All_Objects, All_Arguments, All_Synonyms,
    * We are using Oracle ODBC driver 10.02.00.04 for Windows, the database server is a RS6000 with AIX and Oracle 10g,
    * Aside Oracle Development tools, there are no applications, reports or similar gadgets that query the tables described above.
    I would really appreciate any help about this issue.
    Here is an example of the type of queries that I'm writing about:
    SELECT /*+ RULE */ '', b.owner, decode (b.object_type, 'PACKAGE', CONCAT( CONCAT (b.object_name, '.'), a.object_name), b.object_name), NULL, NULL, NULL, NULL, decode (b.object_type, 'PACKAGE', decode(a.position, 0, 2, 1, 1, 0), decode(b.object_type, 'PROCEDURE', 1, 'FUNCTION', 2, 0))
    FROM ALL_ARGUMENTS a, ALL_OBJECTS b
    WHERE ( b.object_type = 'PROCEDURE' OR b.object_type = 'FUNCTION' ) AND b.object_id = a.object_id AND (a.sequence=1 OR a.sequence=0) AND b.OBJECT_NAME = 'MYTABLE' AND b.OWNER = 'MYSCHEMA' UNION
    SELECT /*+ RULE */ '', b.owner,b.object_name,NULL, NULL, NULL, NULL,decode(b.object_type, 'PROCEDURE', 1, 'FUNCTION', 2, 0)
    FROM ALL_OBJECTS b
    WHERE (b.object_type = 'PROCEDURE' OR b.object_type = 'FUNCTION') AND b.OBJECT_NAME = 'MYTABLE' AND b.OWNER = 'MYSCHEMA' UNION
    SELECT /*+ RULE */ distinct '', a.owner,CONCAT(CONCAT (a.package_name, '.'), a.object_name),NULL, NULL, NULL, NULL,decode(a.position, 0, 2, 1, 1, 0)
    FROM ALL_ARGUMENTS a
    WHERE (a.sequence=1 OR a.sequence=0) AND a.OBJECT_NAME = 'MYTABLE' AND a.OWNER = 'MYSCHEMA' ORDER BY 2,3
    Best Regards,
    Manuel
    Edited by: user10165637 on Jul 28, 2009 1:29 PM

    Hi Greg,
    Thank you for your answer. One of the things that we did when we migrated to Oracle 10g was to ensure that the "Disable Rule Base Hints" flag, located in the "Work-arounds" tab in the ODBC DSN window is checked. We previously refreshed all Microsoft's Access databases to use this new DSN connection. Still, the hints are there.
    However... we may have been able to link these calls to these Oracle System Catalog views, with a custom application that launces Crystal Reports.
    Although we all know that Crystal Reports also caches ODBC DSN configuration settings, I must say that these same Crystal Reports do not generate hints when called from their InfoView server.
    We will proceed to modify the custom application, overridding the dissable rule-base hint work-around with the string "DRH=T" on the connection string. Next week we will know if this works.
    Best Regards,
    Manuel

  • Memory Leak with Oracle ODBC Driver for Long Raw columns

    Oracle version : 8.1.7
    Platform : Win2K
    Oracle ODBC Driver version : 8.0.1.7.5.0.0
    Hi,
    I've got an Oracle database upgraded from
    V8.0.5 to V8.1.7 which has a table having one long raw +
    normal columns. I was able to observe distinct memory
    leaks (approx 80K) when using ODBC interface calls (thro C++ code) that referenced a combination of normal & long raw columns in a select statement. However, this leak was not observed when only normal columns were present in the
    select statement. Is there any known restriction for using
    long raw columns with other columns? Or do long raw columns have a known memory leak problem thro ODBC?
    Thanks!
    Regards
    Sanchayan

    Did you ever get an answer on this issue?
    Thanks in advance

  • How can I do to get Oracle ODBC driver in Windows?

    Hello,
    Please, I need help to use Oracle ODBC driver in Windows 7. I installed Oracle Client 10g with the ODBC driver, but I can't use it. OracleODBC driver don't appear in the driver list when I want to create a new datasource. How I can do to get Oracle ODBC driver for create a new datasource?
    Thank
    Edited by: user4528703 on 13 mars 2010 02:01

    Hello,
    To get the ODBC driver you should run a custom Oracle Client installation and Select
    Oracle Windows Interfaces 10.2.0.1.0.
    Then, you'll get the Oracle ODBC Driver 10.2.0.1.
    But, be aware that Oracle didn't certify Windows 7.
    So, if afterwards, you experience some trouble, think to install Oracle with Xp compatibilty mode, or
    wait to Oracle 11.2.0.1 which will be certified on Windows 7.
    Hope this help.
    Best regards,
    Jean-Valentin

Maybe you are looking for

  • SOFS Throughput Issues

    A question very similar to mine exists here. I have a SOFS cluster (3 hosts). I connected each without nic teaming at first and later tested with nic teaming. I'm using a single 10GbE Netgear M7100-24X switch. The CSV is configured as a 2-way mirror

  • Error message when I try to publish aa application with  BI Mobile App Designer

    Hello, We had last month a product demonstration of BI Mobile App Designer by Oracle's commercial. Following this demonstration, I installed and deployed this module on one of our OBIEE server 11.1.7.141014 I thus tested the BI Mobile App Designer pr

  • Ipod nano connecting with facebook and twiter

    Can i download facebook in my ipod nano???

  • Exception handling for Scanner console input

    I'm trying to add exception handling to a Scanner console to deal with exceptions caused by non-numeric input. My idea was to do use a try/catch in a for loop and break if no exception occurs. Whats happening is the "iNumber = console.nextInt(); " do

  • Unable to locate g++ utility in path

    I am installng R12.1.1 on OEL 5.5 . The system check details have the error: ble to locate g++ utility in path there is no g++ in /usr/bin I ran oracle-valdated. Did I do it incorrectly? Did it install the packages? [root@r410 bin]# up2date nox updat