Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

CDynamicParameterAccessor fail when use OraOleDB provider

5 views
Skip to first unread message

vijay

unread,
Jul 22, 2008, 12:28:54 AM7/22/08
to
Platform - Window Server 2003, VC++ (visual studio 2005)
Database - Oracle Express 10g

Hi,

Below code works fine for SQL Server provider. When i run same code
with OraOleDB provider program fails. Can you please let me know what
can be problem.

Command use for Oracle provider
-----------------------------------------------
COleDbCommand cmd;
cmd.ExecuteNonQuery(m_session, _T("{ CALL
SP_TEST(?) }"));

Stored procedure use for Oracle Provider
-------------------------------------------------------
CREATE OR REPLACE PROCEDURE "SP_TEST" (text OUT VARCHAR2)
IS
BEGIN
text := 'abcd';
END;


------------------------SQL SERVER code which is running
successfully------------------


SQL Server Stored procedure was defined as below:
~~~~~~~~~~~~~~~~~~~~~~~~~~~
ALTER PROCEDURE dbo.SP_TEST
@strText VARCHAR(100) OUTPUT
AS
BEGIN
set @strText= 'abcd';
END;
~~~~~~~~~~~~~~~~~~~~~~~~~~~


#include "stdafx.h"

#define CHECK_HR if (FAILED(hr)) return hr

class COleDbCommand : public CCommand<CDynamicParameterAccessor,
CRowset, CMultipleResults>
{
public:

HRESULT ExecuteNonQuery(CSession &session, LPCTSTR szCommand,
DBROWCOUNT *pRowsAffected = 0)
{

HRESULT hr = S_OK;
hr = Create(session, szCommand); CHECK_HR;
hr = Prepare(); CHECK_HR;
void* pDummy;
hr = BindParameters(&m_hParameterAccessor, m_spCommand,
&pDummy);
CHECK_HR;

hr = Open(NULL, pRowsAffected); CHECK_HR;

return hr;
}
};


int _tmain(int argc, _TCHAR* argv[])
{
::CoInitialize(NULL);
{
CDataSource db;
HRESULT hr = db.OpenFromInitializationString(L"XXXXX");
if (FAILED(hr))
return -1;

CSession m_session;
hr = m_session.Open(db);

COleDbCommand cmd;
cmd.ExecuteNonQuery(m_session, _T("{ ? = CALL
dbo.SP_TEST(?) }"));

CStringA str;
cmd.GetParamString((ULONG)2, str);
_putts(CA2T(str));
m_session.Close();
db.Close();
}

::CoUninitialize();

return 0;

}


Thank in advance,
Vijay Singh

0 new messages