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("{ CALLSP_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("{ ? = CALLdbo.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