Re: Oracle/C++ stored procedure call

From: Ivan Kostenko <ikostenk_at_magicrx.com>
Date: 1996/06/27
Message-ID: <31D2C32B.7389_at_magicrx.com>#1/1


Robert Thompson wrote:
>
> I am having problems calling an Oracle stored procedure from C++ using
> ODBC. The code is below.
>
> Any help would be great. bobts_at_ix.netcom.com
>
>
> void CNoteEngine::SendMessage(CMessage* aMessage)
> {
>
> // hard coded : build column array for generic
> #define SIZEID 80
> #define SIZEMESSAGE 1000
>
> SWORD returnCode;
> SDWORD bindReturnCode;
> SDWORD bindFromId;
> SDWORD bindToId;
> SDWORD bindMessageText;
> UCHAR bufferFromId[SIZEID];
> UCHAR bufferToId[SIZEID];
> UCHAR bufferMessageText[SIZEMESSAGE];
> const char *pFromId;
> const char *pToId;
> const char *pMessageText;
> RETCODE returnVal;
> char sqlString[500];
> unsigned char *test;
>
> memset(sqlString,0,sizeof(sqlString));
>
> retcode = SQLAllocStmt(hdbc, &hstmt);
>
> if (retcode == SQL_SUCCESS)
> {
>
> SQLBindParameter(hstmt, 1, SQL_PARAM_OUTPUT, SQL_C_SLONG,
> SQL_INTEGER,
> 0,0, &returnCode,0, &bindReturnCode);
> SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,
> SQL_CHAR,
> SIZEID,0, bufferFromId,0, &bindFromId);
> SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_CHAR,
> SQL_CHAR,
> SIZEID,0, bufferToId,0, &bindToId);
> SQLBindParameter(hstmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR,
> SQL_CHAR,
> SIZEMESSAGE,0, bufferMessageText,0,
> &bindMessageText);
>
> pFromId = ((LPCTSTR) aMessage->FromId());
> memset(bufferFromId,0,sizeof(bufferFromId));
> memcpy(bufferFromId,pFromId,strlen(pFromId));
>
>
> pToId = ((LPCTSTR) aMessage->ToId());
> memset(bufferToId,0,sizeof(bufferToId));
> memcpy(bufferToId,pToId,strlen(pToId));
>
> pMessageText = ((LPCTSTR) aMessage->MessageText());
> memset(bufferMessageText,0,sizeof(bufferMessageText));
> memcpy(bufferMessageText,pMessageText,strlen(pMessageText)
> ;
>
> strcpy(sqlString,"{?=call MESSAGE_INS(?,?,?)}");
> retcode = SQLExecDirect(hstmt, (UCHAR*) sqlString,
> SQL_NTS);
>
> }
>
> SQLFreeStmt(hstmt, SQL_DROP);

I think it ODBC drivers' problems: many drivers doen't support stored procedure calls or output parameters. Try Intersolve driver: and in ODBC Test look output result after SQLNativesql after {call blabla} Received on Thu Jun 27 1996 - 00:00:00 CEST

Original text of this message