English 中文(简体)
Are there OCI8 replacements for ADO MoveFirst and EOF, BOF?
原标题:

I am researching the possibility of porting an application written in classic ASP with ADO record sets and an Oracle database to PHP5 and OCI8. We have lots of stored procedures and queries with bind variables for performance.

My problem is that we have become lazy from using the ADO classes and the EOF and BOF indicators along with MoveFirst, MoveNext and MovePrevious.

I can not find any similar functionality in the OCI module. Is there any hope?

最佳回答

This is outside my area of expertise, but I think the equivalent functionality outside of ADO would be to retrieve the dataset into an array, then use standard array navigation techniques, rather than functionality that is specific to the database API.


If you re dealing with datasets that are large enough that you don t want to load the whole thing at one time, you should try to find a way to narrow the result set in the query before you start navigating the results. For instance, if you find yourself loading a result set, then just going to the last row, it s easy enough to make the query just return the last row in the first place. If you find yourself retrieving a result set, then looping through it (or filtering) for a specific row (or set of rows), I think you ll find that letting Oracle do that for you will show significantly better performance.

The reason that you need to use arrays to do this kind of navigation with Oracle is that Oracle cursors are always forward-only (whereas with ADO, you have dynamic, keyset, and static cursors as well). If you really need to be able to navigate an entire large result set, loading the whole thing into an array is about your only choice.

问题回答

暂无回答




相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

Connecting to Oracle 10g with ODBC from Excel VBA

The following code works. the connection opens fine but recordset.recordCount always returns -1 when there is data in the table. ANd If I try to call any methods/properties on recordset it crashes ...

How to make a one to one left outer join?

I was wondering, is there a way to make a kind of one to one left outer join: I need a join that matches say table A with table B, for each record on table A it must search for its pair on table B, ...

Insert if not exists Oracle

I need to be able to run an Oracle query which goes to insert a number of rows, but it also checks to see if a primary key exists and if it does, then it skips that insert. Something like: INSERT ALL ...

How can I store NULLs in NOT NULL field?

I just came across NULL values in NOT-NULL fields in our test database. How could they get there? I know that NOT-NULL constraints can be altered with NOVALIDATE clause, but that would change table s ...

Type reference scope

I m studying databases and am currently working on a object-relational DB project and I ve encountered a small problem with the number of possible constraints in an object table. I m using "Database ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

热门标签