Article ID: 190457
Article Last Modified on 10/3/2003
create table myTest (id_num int, last_name char(25)); insert into myTest(id_num,last_name) values (1,'johny[ASCII 224]'); insert into myTest(id_num,last_name) values (2,'smith[ASCII 232]'); insert into myTest(id_num,last_name) values (2,'james');Use the following line once you have tested the problem to remove the table from the Oracle server:
DROP TABLE myTest;
// Begin sample code.
#define STR_LEN 128+1
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <odbcinst.h>
#include <iostream.h>
#include "stdio.h"
int main()
{
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN retcode;
SQLCHAR szLastName[STR_LEN];
SQLINTEGER cbLastName;
SQLUINTEGER pcrow;
SQLUSMALLINT rgfRowStatus;
pcrow=1;
szLastName[0]='\0';
cbLastName=0;
/*Allocate environment handle */
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
/* Set the ODBC version environment attribute */
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,
(void*)SQL_OV_ODBC3, 0);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
/* Allocate connection handle */
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
/* Set login timeout to 5 seconds. */
/*SQLSetConnectAttr(hdbc, SQL_ATTR_LOGIN_TIMEOUT, 5, 0);
/* Connect to data source */
retcode = SQLConnect(hdbc, (SQLCHAR*) "NCORACLE73", SQL_NTS,
(SQLCHAR*) "pss", SQL_NTS,
(SQLCHAR*) "pss", SQL_NTS);
if (retcode == SQL_SUCCESS || retcode ==
SQL_SUCCESS_WITH_INFO){
/* Allocate statement handle */
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
if (retcode == SQL_SUCCESS || retcode ==
SQL_SUCCESS_WITH_INFO) {
retcode = SQLSetStmtAttr(hstmt,SQL_ATTR_CONCURRENCY,
(void *)SQL_CONCUR_READ_ONLY ,SQL_NTS);
// Fails with static cursor but works with Dynamic.
// Change parameter 3 in line below to SQL_CURSOR_STATIC or
// SQL_CURSOR_DYNAMIC to switch cursor type.
retcode = SQLSetStmtAttr(hstmt,SQL_ATTR_CURSOR_TYPE,
(void *) SQL_CURSOR_STATIC ,SQL_NTS);
retcode = SQLPrepare(hstmt,(unsigned char *)"SELECT *
FROM myTest", SQL_NTS);
retcode = SQLExecute(hstmt);
retcode = SQLBindCol(hstmt,2,SQL_C_CHAR, szLastName,
STR_LEN,(long*) cbLastName);
//SQLFetchScroll
retcode = SQLFetchScroll(hstmt, SQL_FETCH_NEXT, 0);
cout << "Printing Record 1: " << szLastName << "\n";
retcode = SQLFetchScroll(hstmt, SQL_FETCH_NEXT, 0);
cout << "Printing Record 2: " << szLastName << "\n";
retcode = SQLFetchScroll(hstmt, SQL_FETCH_FIRST, 0);
cout << "Printing Record 1: " << szLastName << "\n";
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
}
SQLDisconnect(hdbc);
}
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
}
}
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}
return 1;
}
Keywords: kbbug kbfix kboracle kbdatabase kbdriver kbmdacnosweep kbcode KB190457