Patience for a Oracle Noobie

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Chad

    Patience for a Oracle Noobie

    Hi, I am a SQL Server programmer using Oracle for the first time.

    In our .NET client apps which use a SQL Server back end, we would use Stored
    Procedure exclusively for all database access for increased security as well
    as the pre-compiled advantage.

    To minimize trips to the db server, we would often call SPs that return more
    than one recordset. For example:

    CREATE Stored Procedure HelloWorld As
    BEGIN
    SELECT * FROM HELLO
    SELECT * FROM WORLD
    END

    Using ADO.NET, the results would be returned as 2 tables within a dataset
    object.

    We are using Oracle 10g with version 10.2 ODP.NET (data provider) on the
    client. Is there a *PRODUCTION* version of software available which allows
    me to do this simple task?

    If Multiple returned Recordsets are not an option in Oracle SPs, can someone
    please show me the latest and greatest (excluding beta software) for writing
    a baby Oracle SP to return a query result for use by a client app? I am
    found one example that utilizes TYPEs and CURSORs and it looks ugly as hell
    and surprisingly complicated for what it is doing and involves looping
    through a cursor and populating what looks like an array of TYPES which are
    defined as output params. Please tell me that there is a better way of doing
    this in Oracle.

    We could construct the query as a string on the client but I would really
    like to put the DB access in the database as compiled queries.

    It would be great if someone could write the Oracle equivalent of the 5 line
    SQL Server proc above for me, it would help a lot. If two returned queries
    is too much for it, a one query example would still be useful.

    Thanks


  • Jim Kennedy

    #2
    Re: Patience for a Oracle Noobie


    "Chad" <chaddokmanovic h@comcast.netne twrote in message
    news:NcCdnYMOhc 36x_jZ4p2dnA@co mcast.com...
    Hi, I am a SQL Server programmer using Oracle for the first time.
    >
    In our .NET client apps which use a SQL Server back end, we would use
    Stored
    Procedure exclusively for all database access for increased security as
    well
    as the pre-compiled advantage.
    >
    To minimize trips to the db server, we would often call SPs that return
    more
    than one recordset. For example:
    >
    CREATE Stored Procedure HelloWorld As
    BEGIN
    SELECT * FROM HELLO
    SELECT * FROM WORLD
    END
    >
    Using ADO.NET, the results would be returned as 2 tables within a dataset
    object.
    >
    We are using Oracle 10g with version 10.2 ODP.NET (data provider) on the
    client. Is there a *PRODUCTION* version of software available which allows
    me to do this simple task?
    >
    If Multiple returned Recordsets are not an option in Oracle SPs, can
    someone
    please show me the latest and greatest (excluding beta software) for
    writing
    a baby Oracle SP to return a query result for use by a client app? I am
    found one example that utilizes TYPEs and CURSORs and it looks ugly as
    hell
    and surprisingly complicated for what it is doing and involves looping
    through a cursor and populating what looks like an array of TYPES which
    are
    defined as output params. Please tell me that there is a better way of
    doing
    this in Oracle.
    >
    We could construct the query as a string on the client but I would really
    like to put the DB access in the database as compiled queries.
    >
    It would be great if someone could write the Oracle equivalent of the 5
    line
    SQL Server proc above for me, it would help a lot. If two returned queries
    is too much for it, a one query example would still be useful.
    >
    Thanks
    >
    >
    Hi,
    Oracle!=SQLServ er. They are two very different products. In Oracle you
    don't have to use a stored procedure to get the advantage of "compiled" SQL.
    (the explain plan) You do have to use bind variables and that is a good
    practice in any RDBMs to get reuse of the execution plan.

    That said it is a good idea to use stored procedures for what you are trying
    to do. In your case you can use ref cursors as out parameters. You should
    also use packages. asktom.oracle.c om has some great examples:


    The select statement gets returned into a ref cursor. If you want to return
    two sets then return each one into a ref cursor. (thus you would have 2 out
    parameters.)

    Don't construct a string on the client even with stored procedures. Use
    bind variables and call the stored procedures with bind variables. You will
    get better scaling and better performance.
    Jim


    Comment

    Working...