CDynamicParameterAccessor fail when use OraOleDB provider
Date: Mon, 21 Jul 2008 21:28:54 -0700 (PDT)
Message-ID: <4e68c8e1-c5cf-4892-8d62-084b37543b4f@j7g2000prm.googlegroups.com>
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
Received on Mon Jul 21 2008 - 23:28:54 CDT
