Re: ADO.NET and ODBC { CALL ..... } Syntax

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance

From: David Browne (meat_at_hotmail.com)
Date: 11/05/04


Date: Fri, 5 Nov 2004 13:43:53 -0600


"Nilesh" <Nilesh@discussions.microsoft.com> wrote in message
news:0F15C69F-26C6-4997-A046-CA8DF551F70C@microsoft.com...
> Environment:
> Web server IIS 5 running on Windows 2000 (SP2)
> Oracle Client 8.1.7
> Coonecting to Oracle 8i DB running on Unix
> ADO is used as connecting mechanism (MSDAORA)
>
> Synopsis:
> Curently we are using ADO (MDAC 2.5) to connect to Oracle 8i (Oracle
> client
> 8.1.7).
> We are using heavily ODBC call syntax { CALL ,.} and so on. We are using
> OleDB connection with provider as MSDAORA.
> Especially the using ODBC Call syntax to fetch the data either via Stored
> Proc, Function or REF Cursor. It is working seamlessly!
>
> Lately we are trying to migrate to ADO.NET. I was trying to test the same
> concept of ODBC call Notation with Microsoft ADO.NET Oracle provider (came
> with .Net 1.1) System.Data.OracleClient as well as System.Oledb .NET
> Provider. However to my surprise I found that this technique does not work
> the same way as it works in ADO arena.
>
> To be specific, in ADO world for Command Object, once I set the
> CommandType
> and CommandText property then after setting the ActiveCoonection property,
> ADO intelligently populates the Parameter Collection seamlessly based on
> '?'

An expensive round trip to Oracle.

> notation in the provided CommandText property. Parameter collection is
> populated with Input and Output parameters, data type is set properly.
> This
> is automatically done by ADO.
>
> Does ADO.Net (System.OracleClinet) supports this behavior? However MSDAORA
> OleDB provider supports above OBDC call syntax.
>
> Secondly System.OleDB not being 100% managed provider, still uses MSDAORA
> OleDB provider underneath. However my finding shows that it does not
> populate
> the Prameter collection automatically. One has to add the Items to
> parameter
> collection, set the type and direction and so on.
>
> I would like know am I missing anything out here? Any other way to have
> identical behavior with System.OracleClient.
>
> Can anybody please provide me with expert advise from your side as to what
> needs to be done in ADO.NET world to have the same behavior as ADO world
> as
> far as
> Calling Oracle SPs/Functions with ODBC Call notation?

Forget ODBC call notation. The equivilent in ADO.NET is to set your
CommandType to StoredProcedure, set your CommandText to the name of the
stored procedure and run
OracleCommandBuilder.DeriveParameters(OracleCommand) to go to the server and
figure out what the parameters should be.

You should really only do this at design-time, or with a command you will
execute many times, since querying Oracle for the procedure parameters is
not free.

David



Relevant Pages

  • Re: ADO.NET and ODBC { CALL ..... } Syntax
    ... > Coonecting to Oracle 8i DB running on Unix ... > OleDB connection with provider as MSDAORA. ... > the same way as it works in ADO arena. ...
    (microsoft.public.dotnet.framework.adonet)
  • ADO.NET and ODBC { CALL ..... } Syntax
    ... Coonecting to Oracle 8i DB running on Unix ... ADO is used as connecting mechanism ... OleDB connection with provider as MSDAORA. ... Especially the using ODBC Call syntax to fetch the data either via Stored ...
    (microsoft.public.dotnet.framework.adonet)
  • Re: ADO request mistery
    ... I am running an application on a client machine (server 2003 sp2) that uses ... the oledb driver to execute ado command. ... The oracle has nls_language AMERICAN and nls_territory. ... The application is regularly executing an update command. ...
    (comp.databases.oracle.server)
  • Re: Database Scripting exec procedure
    ... Do you have to explicitly commit the transaction with Oracle? ... that's the case using the command line. ... maybe not with ADO. ...
    (microsoft.public.scripting.vbscript)
  • Hope springs eternal...
    ... ORACLE to the ADO component ... greater value doesn't translate very well in Delphi. ... you can specify the connection information on a Command item. ...
    (borland.public.delphi.database.ado)