ORA-01008: not all variables bound error when using MFC CRecordset::Requery

Discussion in 'MFC' started by HorstNabulke, Sep 13, 2006.

  1. HorstNabulke

    HorstNabulke New Member

    Joined:
    Sep 13, 2006
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    Hello,

    I've got a problem using the MFC CDatabase and CRecordset C++ classes with the Oracle ODBC driver. After successfully opening a database connection and retrieving data using a recordset, I want to rebuild the recordset using a new filter parameter value.

    Setting a new filter value and calling the CRecordset::Requery() function should do the trick but it always results in an "ORA-01008: not all variables bound" error. I attached some sources and an ODBC trace captured when the error occurs.

    Got any ideas what's wrong?

    Any help in resolving that issue would be greatly appreciated.

    Regards

    Horst

    Environment:
    ============
    Oracle 10g ODBC Driver 10.02.00.01 (SQORA32.DLL), WIN XP, Visual C++ 6.0
    MFC
    Oracle 10g database

    Main program:
    =============
    Code:
    CDatabase oraDB;
    
    oraDB.OpenEx("DSN=xxxxx;", CDatabase::noOdbcDialog)
    
    CDBTest paraTestSet;
    
    paraTestSet.m_pDatabase = &oraDB;
    
    // Set SQL-WHERE clause
    paraTestSet.m_strFilter = "PRODUKTIONSNR = ?";
    
    // Set the filter for the first query
    CString strFilter = "12345";
    paraTestSet.m_PRODUKTIONSNRParam = strFilter;
    
    // Run the first query and fetch some results
    paraTestSet.Open();
    
    ....//SUCCESS
    
    // Set new filter
    strFilter = "45678";
    
    paraTestSet.m_PRODUKTIONSNRParam = strFilter;
    
    // If I uncomment this line it works!
    // paraTestSet.m_strSort = "PRODUKTIONSNR";
    
    // Run the query again with changed filter settings
    paraTestSet.Requery();
    Error: Requery attempt failed.
    ORA-01008: not all variables bound
    State:07001,Native:1008,Origin:[Oracle][ODBC][Ora]

    Code:
    // Parts of the source code
    CDBTest::CDBTest(CDatabase* pdb)
    : CRecordset(pdb)
    {
    //{{AFX_FIELD_INIT(CDBTest)
    m_PRODUKTIONSNR = _T("");
    m_PRUEFMODUL = _T("");
    m_nFields = 2;
    //}}AFX_FIELD_INIT
    m_nDefaultType = snapshot;
    m_nParams = 1;
    m_PRODUKTIONSNRParam = "";
    
    }
    
    void CDBTest::DoFieldExchange(CFieldExchange* pFX)
    {
    //{{AFX_FIELD_MAP(CDBTest)
    pFX->SetFieldType(CFieldExchange::outputColumn);
    RFX_Text(pFX, _T("[PRODUKTIONSNR]"), m_PRODUKTIONSNR);
    RFX_Text(pFX, _T("[PRUEFMODUL]"), m_PRUEFMODUL);
    //}}AFX_FIELD_MAP
    pFX->SetFieldType( CFieldExchange::param );
    RFX_Text(pFX, "PRODUKTIONSNRParam", m_PRODUKTIONSNRParam);
    
    }
    
    // Header file of Recordset
    class CDBTest : public CRecordset
    {
    public:
    CDBTest(CDatabase* pDatabase = NULL);
    DECLARE_DYNAMIC(CDBTest)
    
    // Feld-/Parameterdaten
    //{{AFX_FIELD(CDBTest, CRecordset)
    CString m_PRODUKTIONSNR;
    CString m_PRUEFMODUL;
    //}}AFX_FIELD
    CString m_PRODUKTIONSNRParam;
    ....
    
    }
    
    ODBC Trace:
    ===========

    [....]

    ODBCTest d0c-974 ENTER SQLExtendedFetch
    HSTMT 00931960
    UWORD 1 <SQL_FETCH_NEXT>
    SQLLEN 1
    SQLULEN * 0x0012FE28
    UWORD * 0x00334F08

    ODBCTest d0c-974 EXIT SQLExtendedFetch with return code 100
    (SQL_NO_DATA_FOUND)
    HSTMT 00931960
    UWORD 1 <SQL_FETCH_NEXT>
    SQLLEN 1
    SQLULEN * 0x0012FE28
    UWORD * 0x00334F08

    // End of first successfull query

    ODBCTest d0c-974 ENTER SQLFreeStmt
    HSTMT 00931960
    UWORD 0 <SQL_CLOSE>

    ODBCTest d0c-974 EXIT SQLFreeStmt with return code 0 (SQL_SUCCESS)
    HSTMT 00931960
    UWORD 0 <SQL_CLOSE>

    // Requery attempt that fails....
    ODBCTest d0c-974 ENTER SQLExecute
    HSTMT 00931960

    ODBCTest d0c-974 EXIT SQLExecute with return code -1 (SQL_ERROR)
    HSTMT 00931960

    DIAG [07001] [Oracle][ODBC][Ora]ORA-01008: not all variables bound
     
  2. Sujeet Savant

    Sujeet Savant New Member

    Joined:
    Jan 23, 2007
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    Iam facing the same problem
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice