CDynamicParameterAccessor fail when use OraOleDB provider

From: vijay <vksinghbhu_at_gmail.com>
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

Original text of this message