Just drop the TOP 1 from the SQL. I added that to prevent the DB from selecting all records and doing to much work. However, having the $sth->finish call at the end should minimize the overhead by merely finishing up the statement handle without fetching the subsequent rows.
Of course, Oracle should support some form of the TOP syntax, but I don't know Oracle.
Cheers,
Ovid
Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.
| [reply] [d/l] |
Just execute a query with a false where clause:
select * from ... where 1=0
This will return an empty result set, but you'll still get all the column headers, names, etc.
Michael
| [reply] [d/l] |
OK. I think I see now. Another question: How do you
get the types, like varchar2(2000), number(3), date, etc?
Basically I want to get all the results from a DESC operation into my Perl script. Thanks!
Robert
| [reply] |
I think this is soooo system dependent, and that it would be faster consulting your manual. Just as an example, in PostgreSQL you would need to either use "\d $tablename", or you would need to go into system tables such as pg_class, pg_attribute, and pg_type. I know how to do this in Postgres, but this certainly doesn't apply to any other databases.
I'm sure there is a way, but I think you're asking in the wrong place. You should find your manual and look for this information, or ask an oracle users group...
| [reply] |
While I am not familiar with the TOP syntax, I bet ROWNUM can be used to do the same. ROWNUM is a the number of a row as it was retrieved from the table (this differs from the display order) -- to limit results to 10 rows, you can use WHERE ROWNUM <= 10. (Please note: this takes place before sorting, so it is no good for getting the "top 10" and such.)
SELECT *
FROM scott.emp
WHERE ROWNUM = 1;
| [reply] [d/l] |