1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

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