SQL_NEED__DATA - Mailing list pgsql-odbc

From Igor Korot
Subject SQL_NEED__DATA
Date
Msg-id CA+FnnTwPx-3_zpgXT1A834fxwWBMHZs5PGYEOJcDO609HMvyQg@mail.gmail.com
Whole thread
List pgsql-odbc
Hi,

Consider following table:

CREATE TABLE IF NOT EXISTS abcatvld(abv_name char(30) NOT NULL,
abv_vald char(254), abv_type smallint, abv_cntr integer, abv_msg
char(254), PRIMARY KEY( abv_name ));

the following code:

[code]
int ODBCDatabase::CreateUpdateValidationRule(bool isNew, const
std::wstring &name, const std::wstring &rule, const int type, const
std::wstring &message, std::vector<std::wstring> &errorMsg)
{
    int result = 0;
    std::wstring errorMessage;
    std::wstring query = L"";
    SQLLEN val1, val2, val3, val4, val5;
    if( isNew )
        query = L"INSERT INTO abcatvld( abv_name, abv_vald, abv_type,
abv_msg ) VALUES( ?, ?, ?, ?)";
    else
        query = L"UPDATE abcatvld SET abv_name = ?, abv_vald = ?,
abv_type = ?, abv_msg = ? WHERE abv_name = ?";
    auto qry = new SQLWCHAR[query.length() + 2];
    memset( qry, '\0', query.length() + 2 );
    uc_to_str_cpy( qry, query );
    auto qryName = new SQLWCHAR[32];
    memset( qryName, '\0', 32 );
    uc_to_str_cpy( qryName, name );
    auto qryRule = new SQLWCHAR[258];
    memset( qryRule, '\0', 258 );
    uc_to_str_cpy( qryRule, rule );
    auto qryType = (int) type;
    auto qryMessage = new SQLWCHAR[256];
    memset( qryMessage, '\0', 256 );
    uc_to_str_cpy( qryMessage, message );
    auto ret = SQLAllocHandle( SQL_HANDLE_STMT, m_hdbc, &m_hstmt );
    if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
    {
        GetErrorMessage( errorMsg, CONN_ERROR );
        result = 1;
    }
    if( !result )
    {
        ret = SQLPrepare( m_hstmt, qry, SQL_NTS );
        if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
        {
            GetErrorMessage( errorMsg, STMT_ERROR );
            result = 1;
        }
    }
    if( !result )
    {
        ret = SQLBindParameter( m_hstmt, 1, SQL_PARAM_INPUT,
SQL_C_WCHAR, SQL_WCHAR, 32, 0, qryName, 0, &val1 );
        if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
        {
            GetErrorMessage( errorMsg, STMT_ERROR );
            result = 1;
        }
    }
    if( !result )
    {
        ret = SQLBindParameter( m_hstmt, 2, SQL_PARAM_INPUT,
SQL_C_WCHAR, SQL_WCHAR, 258, 0, qryRule, 0, &val2 );
        if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
        {
            GetErrorMessage( errorMsg, STMT_ERROR );
            result = 1;
        }
    }
    if( !result )
    {
        ret = SQLBindParameter( m_hstmt, 3, SQL_PARAM_INPUT,
SQL_C_SSHORT, SQL_INTEGER, 0, 0, &qryType, 0, &val3 );
        if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
        {
            GetErrorMessage( errorMsg, STMT_ERROR );
            result = 1;
        }
    }
    if( !result )
    {
        ret = SQLBindParameter( m_hstmt, 4, SQL_PARAM_INPUT,
SQL_C_WCHAR, SQL_WCHAR, 254, 0, &qryMessage, 0, &val4 );
        if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
        {
            GetErrorMessage( errorMsg, STMT_ERROR );
            result = 1;
        }
    }
    if( !isNew && !result )
    {
        ret = SQLBindParameter( m_hstmt, 5, SQL_PARAM_INPUT,
SQL_C_WCHAR, SQL_WCHAR, 32, 0, qryName, 0, &val5 );
        if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
        {
            GetErrorMessage( errorMsg, STMT_ERROR );
            result = 1;
        }
    }
    if( !result )
    {
        ret = SQLExecute( m_hstmt );
        if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
        {
            GetErrorMessage( errorMsg, STMT_ERROR );
            result = 1;
        }
    }
}

returns 99 (SQL_NEED_DATA).

What am I doing wrong?

Thank you.



pgsql-odbc by date:

Previous
From: Jürgen E. Fischer
Date:
Subject: Re: Using pgpass and pg_config files with psqlODBC