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: